ฉันเห็น kswapd ใช้ CPU 100% ... ฉันจะบอกได้อย่างไรว่า kswapd ใช้กระบวนการใดในนามของกระบวนการใด?
ฉันเห็น kswapd ใช้ CPU 100% ... ฉันจะบอกได้อย่างไรว่า kswapd ใช้กระบวนการใดในนามของกระบวนการใด?
คำตอบ:
kswapd กำลังจัดการพื้นที่สว็อปในการตอบสนองต่อความต้องการของหน่วยความจำที่มากกว่าทางกายภาพสำหรับกระบวนการทั้งหมด
มันเป็นกระบวนการที่ไม่เชื่อเรื่องพระเจ้ามันสนใจเฉพาะในสิ่งที่หน้ามีการเข้าถึงและเมื่อ (มันมีความซับซ้อนมากกว่านี้แน่นอน แต่เพื่อให้สิ่งที่ง่ายเราอาจดูด้วยวิธีนี้)
ดังนั้นคำถามที่แท้จริงคือ "กระบวนการใดที่มีภาระมากที่สุดในหน่วยความจำซึ่งทำให้ kswapd จำเป็นต้องเพจตลอดเวลา"
นั่นคือคำตอบที่ง่ายที่สุดโดยใช้ 'ด้านบน' และเปลี่ยนเป็นโหมดการเรียงลำดับการใช้หน่วยความจำ
top
กำลังบอกฉันว่าไม่มีการใช้เวลาในการรอ IO และเวลาเกือบ 100% กำลังถูกใช้ในระบบ ข้อมูลเพิ่มเติม: kswapd มักจะใช้ CPU 100% เมื่อมีการสลับการใช้งาน
คุณสามารถสคริปต์มัน .. แต่คุณสามารถทำได้ผ่านทางด้านบน
Run top จากนั้นกดOตามด้วยpจากนั้นกดEnter
ตอนนี้กระบวนการทั้งหมดจะถูกจัดเรียงตามการใช้ swap และคุณสามารถดูว่ากระบวนการใดกำลังใช้งานอยู่
หากคุณใช้ Ubuntu 15.10 ขึ้นไปอาจเป็นผลมาจากข้อผิดพลาดโดยเฉพาะอย่างยิ่งหากระบบของคุณเป็นเครื่องเสมือนที่ไม่มีพาร์ติชัน swap (เช่น AWS EC2) ปัญหามีอยู่ในดิสทริบิวชันอื่น ๆแต่ในฐานะที่เป็นลายลักษณ์อักษรมันไม่ชัดเจนว่าการแก้ไขเดียวกันทำงานได้ในระดับสากล
วิธีแก้ปัญหาชั่วคราว:
sudo ln -s /dev/null /etc/udev/rules.d/40-vm-hotadd.rules
sudo reboot
โปรดทราบว่าการดำเนินการนี้จะปิดใช้งาน RAM / CPU hotadding สำหรับเครื่องเสมือน Xen และ Hyper-V
echo 3 > /proc/sys/vm/drop_caches
มันบรรเทาลงเมื่อมันเริ่มเกิดขึ้น ฉันได้รับคำสั่งล่วงหน้าเกี่ยวกับงาน cron ล่วงหน้าและดูเหมือนว่าจะช่วยหรืออย่างน้อยก็ จำกัด ระยะเวลาของการสังหารหมู่ OOM เมื่อฉันไม่อยู่ที่คอมพิวเตอร์
ดูเหมือนว่าจะมีข้อผิดพลาดในkswapd
บางแห่งหวังว่าเฉพาะเมล็ดข้าวที่มีอายุมากกว่า
เกือบทุกวันในขณะนี้ kswapd ไปโจมตีอย่างสุ่มบนเครื่องบางเครื่องในคลัสเตอร์ที่ใหญ่กว่า CPU 100% ทั้งในกระบวนการ kswapd ไม่มีกระบวนการทำงานอื่น ๆ (ยกเว้น ssh shell), RAM ฟรีมากมาย (มากกว่า 700 MB) และไม่มีการใช้ SWAP เลย ไม่มีการสลับไม่มีการสลับเช่นกัน
ยังไม่มีคำอธิบายว่าทำไมเครื่องใดเครื่องหนึ่งถึงได้ถูกตีและอีกเครื่องไม่ได้ ดูเหมือนว่าจะไม่ได้รับการสุ่มอย่างสมบูรณ์เพราะโดยปกติแล้วจะกระทบกับเครื่องมากกว่าหนึ่งเครื่องภายในระยะเวลาอันสั้น ดูเหมือนว่าเครื่องจักรซึ่งไม่ได้ใช้งานเช่นเดียวกับเครื่องซึ่งอยู่ภายใต้แรงดันสูงจะมีผลกระทบน้อยกว่า (!) ดังนั้นจึงต้องทำอะไรบางอย่างกับภาระงานและยอดนิยมเฉพาะในกรณีที่เครื่องไม่ได้ใช้งานหรือยุ่งมาก
หากปัญหาการนัดหยุดงานไม่มีอะไรช่วยอีกต่อไป ฆ่ากระบวนการทั้งหมด (ซึ่งไม่ได้กลายเป็นทักษะไม่ได้), unmounting ระบบไฟล์ทั้งหมดไม่มีอะไร kswapd
ยังคงอยู่ที่ CPU 100% ฉันสงสัยว่ามีการแข่งขัน spinlock ในเมล็ดของ SMP แต่ก็เป็นไปได้ว่าฉันคิดผิด
อาจเห็นคำตอบserverfault.com/questions/316995/#493257ของฉัน
หมายเหตุ: