ในความคิดเห็นที่ฉันแนะนำให้คุณสร้างกลุ่ม cg ตั้งค่าmemory.swappinessเป็นศูนย์ (เพื่อลดการแลกเปลี่ยน) และเรียกใช้โปรแกรมประยุกต์ของคุณภายในที่ หากคุณทำเช่นนั้นแอปพลิเคชันของคุณอาจไม่สลับเว้นแต่คุณจะมีหน่วยความจำกายภาพเหลือน้อยมากที่เปลี่ยนหน้าของโปรแกรมใน cgroup นั้นเป็นวิธีเดียวที่จะทำให้มีหน่วยความจำกายภาพเพียงพอ
เมื่อต้องการทำสิ่งนี้กับ RHEL 6.5:
ตรวจสอบให้แน่ใจว่าlibcgroupได้ติดตั้งแพ็คเกจแล้ว นี้จะช่วยให้คุณสามารถเข้าถึงเครื่องมือ userspace ชอบ และcgcreatecgexec
เริ่มต้นและเปิดใช้งานcgconfigบริการเพื่อให้การเปลี่ยนแปลงการกำหนดค่า cgroup ยังคงอยู่ระหว่างการรีบูต บน RHEL บริการนี้ควรติดตั้งระบบไฟล์ที่ต้องการอยู่ใต้/cgroupต้นไม้
สร้างกลุ่ม cg ด้วย cgcreate -g memory:thunderbird
ตั้ง swappiness เป็นศูนย์ในกลุ่มนี้ด้วย cgset -r memory.swappiness=0 thunderbird
ใช้cgsnapshot -s > /etc/cgconfig.confเพื่อบันทึกการกำหนดค่าแบบต่อเนื่องที่อัปเดตสำหรับcgconfigบริการ (การเปลี่ยนแปลงทั้งหมดจนถึงตอนนี้เป็นการเปลี่ยนแปลงแบบรันไทม์คุณอาจต้องการบันทึกไฟล์การกำหนดค่าเริ่มต้นไว้ที่ใดที่หนึ่ง
ตอนนี้คุณสามารถใช้cgexecเพื่อเริ่มแอปพลิเคชันที่ต้องการภายในกลุ่มthunderbirdcgroup:
[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ข้อมูลที่ละเอียดอ่อนเกี่ยวกับแอปพลิเคชันเพื่อแก้ไขข้อกังวลนี้ อย่างไรก็ตามฉันยินดีที่จะเดิมพันแอปพลิเคชันอย่างธันเดอร์เบิร์ดทำเช่นนั้น แต่ฉันไม่รู้เกี่ยวกับผู้ที่จะแสดงความคิดเห็นเกี่ยวกับเรื่องนี้
cgexecThunderbird เป็นมัน คุณยังต้องการการเข้าถึงรูท แต่นั่นคือความละเอียดระดับผู้ดูแลระบบ หากคุณกำลังพัฒนาแอพลิเคชันของคุณเองที่คุณจะใช้ mlock