ในความคิดเห็นที่ฉันแนะนำให้คุณสร้างกลุ่ม cg ตั้งค่าmemory.swappiness
เป็นศูนย์ (เพื่อลดการแลกเปลี่ยน) และเรียกใช้โปรแกรมประยุกต์ของคุณภายในที่ หากคุณทำเช่นนั้นแอปพลิเคชันของคุณอาจไม่สลับเว้นแต่คุณจะมีหน่วยความจำกายภาพเหลือน้อยมากที่เปลี่ยนหน้าของโปรแกรมใน cgroup นั้นเป็นวิธีเดียวที่จะทำให้มีหน่วยความจำกายภาพเพียงพอ
เมื่อต้องการทำสิ่งนี้กับ RHEL 6.5:
ตรวจสอบให้แน่ใจว่าlibcgroup
ได้ติดตั้งแพ็คเกจแล้ว นี้จะช่วยให้คุณสามารถเข้าถึงเครื่องมือ userspace ชอบ และcgcreate
cgexec
เริ่มต้นและเปิดใช้งานcgconfig
บริการเพื่อให้การเปลี่ยนแปลงการกำหนดค่า cgroup ยังคงอยู่ระหว่างการรีบูต บน RHEL บริการนี้ควรติดตั้งระบบไฟล์ที่ต้องการอยู่ใต้/cgroup
ต้นไม้
สร้างกลุ่ม cg ด้วย cgcreate -g memory:thunderbird
ตั้ง swappiness เป็นศูนย์ในกลุ่มนี้ด้วย cgset -r memory.swappiness=0 thunderbird
ใช้cgsnapshot -s > /etc/cgconfig.conf
เพื่อบันทึกการกำหนดค่าแบบต่อเนื่องที่อัปเดตสำหรับcgconfig
บริการ (การเปลี่ยนแปลงทั้งหมดจนถึงตอนนี้เป็นการเปลี่ยนแปลงแบบรันไทม์คุณอาจต้องการบันทึกไฟล์การกำหนดค่าเริ่มต้นไว้ที่ใดที่หนึ่ง
ตอนนี้คุณสามารถใช้cgexec
เพื่อเริ่มแอปพลิเคชันที่ต้องการภายในกลุ่มthunderbird
cgroup:
[root @ xxx601 ~] # cgexec -g หน่วยความจำ: thunderbird ls
anaconda-ks.cfg a.out foreman.log index.html install.log install.log.syslog node.pp sleep sleep.c ssl-build stack test
[root @ xxx601 ~] #
ฉันไม่ได้thunderbird
ติดตั้งจริง ๆ มิฉะนั้นฉันจะทำเช่นนั้น ไม่แน่ใจว่าทำไมการจัดรูปแบบของด้านบนจึงเกิดความสับสน
ทางเลือกหนึ่งที่cgexec
จะเริ่มต้น Thunderbird และเพิ่ม PID ลงในtasks
ไฟล์สำหรับแอปพลิเคชัน ตัวอย่างเช่น:
[root @ xxx601 ~] # cat / cgroup / memory / thunderbird / งาน
[root @ xxx601 ~] # pidof httpd
25926 10227 10226 10225 10163 10162 10161 10160 10159 10157 10156 10155 10155 10152 10109
[root @ xxx601 ~] # echo 25926> / cgroup / memory / thunderbird / งาน
[root @ xxx601 ~] # cat / cgroup / memory / thunderbird / งาน
25926
อีกครั้งที่หมีพูดถึงว่ามันไม่ได้ป้องกันการแลกเปลี่ยนทางเทคนิค แต่ขาดการปรับเปลี่ยนแอปพลิเคชันตัวเองมันอาจเป็นทางออกที่ดีที่สุดของคุณ ฉันเพิ่งพบตอนนี้memory.memsw.limit_in_bytes
ซึ่งดูเหมือนว่าอาจเป็นการควบคุมโดยตรงที่บังคับให้ไม่มีการแลกเปลี่ยน แต่ฉันไม่ได้เล่นกับมันมากพอที่จะรู้สึกสะดวกสบายจริง ๆ บอกว่ามันแก้ปัญหาของคุณได้อย่างสมบูรณ์ ที่กล่าวว่าอาจเป็นสิ่งที่ต้องพิจารณา
คำตอบที่แท้จริงคือการให้mlock
ข้อมูลที่ละเอียดอ่อนเกี่ยวกับแอปพลิเคชันเพื่อแก้ไขข้อกังวลนี้ อย่างไรก็ตามฉันยินดีที่จะเดิมพันแอปพลิเคชันอย่างธันเดอร์เบิร์ดทำเช่นนั้น แต่ฉันไม่รู้เกี่ยวกับผู้ที่จะแสดงความคิดเห็นเกี่ยวกับเรื่องนี้
cgexec
Thunderbird เป็นมัน คุณยังต้องการการเข้าถึงรูท แต่นั่นคือความละเอียดระดับผู้ดูแลระบบ หากคุณกำลังพัฒนาแอพลิเคชันของคุณเองที่คุณจะใช้ mlock