ฉันจะกำหนดกลุ่ม cg ให้ใช้ทรัพยากรร่วมกันระหว่างผู้ใช้ได้อย่างไร


11

เคยเป็นตัวเลือก config ของเคอร์เนลที่ชื่อว่า sched_user หรือคล้ายกันภายใต้กลุ่ม cg สิ่งนี้ทำให้ผู้ใช้ทุกคนสามารถแบ่งปันทรัพยากรระบบได้อย่างเป็นธรรม ใน 2.6.35 ไม่สามารถใช้ได้ มีวิธีที่ฉันสามารถกำหนดค่าระบบของฉันเพื่อแบ่งปันทรัพยากร io / cpu / หน่วยความจำโดยอัตโนมัติระหว่างผู้ใช้ทั้งหมด (รวมถึงรูทหรือไม่) ฉันไม่เคยตั้งกลุ่ม cgroup มาก่อนมีการสอนที่ดีสำหรับการทำเช่นนั้นหรือไม่? ขอบคุณมาก.


ดีฉันเอาของขวัญที่แพ็คเกจ cgroups-bin บน Ubuntu และฉันค่อนข้างแน่ใจว่ามัน "ทำสิ่งนี้" เป็นค่าเริ่มต้นหากฉันเพิ่งติดตั้ง ฉันคิดว่ามันจะต้องมีการติดตั้ง แต่ฉันคิดว่ามันแค่ถ้าคุณมีความต้องการพิเศษ ฉันทดสอบโดยใช้ความเครียดกับ 2 cpu thread ใต้ root และ 2 ใต้ user ของฉันและกระทู้ทั้ง 4 ดูเหมือนจะแบ่ง 50% ที่ด้านบนซึ่งทำให้ฉันคิดว่ามันใช้งานได้ สิ่งนี้อาจ "แก้ปัญหา" สำหรับฉันอย่างไรก็ตามหากมีสิ่งใดที่ฉันต้องการมีวิธีที่ชัดเจนกว่าในการยืนยันหรือความคิดที่ดีกว่าวิธีการกำหนดค่าขอบคุณอีกครั้ง!
NightwishFan

ลองสิ่งนี้: kennystechtalk.blogspot.co.uk/2015/04/…
Ken Sharp

คำตอบ:


12

เอกสารเคอร์เนลให้ความคุ้มครองทั่วไปของกลุ่ม cg ที่มีตัวอย่าง

cgroups-binแพคเกจ (ซึ่งขึ้นอยู่กับlibcgroup1) ให้อยู่แล้วโดยการกระจายควรจะปรับ

การกำหนดค่าทำได้โดยการแก้ไขสองไฟล์ต่อไปนี้:

/etc/cgconfig.conf

ใช้โดย libcgroup เพื่อกำหนดกลุ่มควบคุมพารามิเตอร์และจุดเชื่อมต่อ

/etc/cgrules.conf

ใช้โดย libcgroup เพื่อกำหนดกลุ่มควบคุมที่เป็นของกระบวนการ

ไฟล์การกำหนดค่าเหล่านั้นมีตัวอย่างอยู่แล้วดังนั้นลองปรับตามความต้องการของคุณ หน้าคนครอบคลุมการกำหนดค่าของพวกเขาค่อนข้างดี

หลังจากนั้นให้เริ่ม workload manager และกฎ daemon:

service cgconfig restart
service cgred restart

ผู้จัดการเวิร์คโหลด (cgconfig) รับผิดชอบในการจัดสรร ressources
การเพิ่มกระบวนการใหม่ให้กับผู้จัดการ:

cgexec [-g <controllers>:<path>] command [args]

การเพิ่มกระบวนการที่กำลังทำงานอยู่ในผู้จัดการ:

cgclassify [-g <controllers>:<path>] <pidlist>

หรือโดยอัตโนมัติเหนือไฟล์ cgrules.conf และ CGroup Rules Daemon (cgred) ซึ่งบังคับให้ทุกกระบวนการวางไข่ใหม่เข้าสู่กลุ่มที่ระบุ


ตัวอย่าง /etc/cgconfig.conf:

group group1 {
    perm {
            task {
                    uid = alice;
                    gid = alice;
            }
            admin {
                    uid = root;
                    gid = root;
            }
    }

    cpu {
            cpu.shares = 500;
    }

}

group group2 {
    perm {
            task {
                    uid = bob;
                    gid = bob;
            }
            admin {
                    uid = root;
                    gid = root;
            }
    }

    cpu {
            cpu.shares = 500;
    }

}

mount {
    cpu = /dev/cgroups/cpu;
    cpuacct = /dev/cgroups/cpuacct;
}

ตัวอย่าง /etc/cgrules.conf:

alice            cpu             group1/
bob              cpu             group2/

สิ่งนี้จะแชร์ทรัพยากร CPU ประมาณ 50-50 ระหว่างผู้ใช้ 'alice' และ 'bob'


การเรียนรู้ cgroups บุ๊คมาร์คสิ่งนี้ ขอบคุณ
Jigar
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.