ฉันจะบอกได้อย่างไรว่ากระบวนการใดทำให้ kswapd ใช้งานอยู่


23

ฉันเห็น kswapd ใช้ CPU 100% ... ฉันจะบอกได้อย่างไรว่า kswapd ใช้กระบวนการใดในนามของกระบวนการใด?


1
อืม kswapd เป็นกระบวนการ มันทำงานในนามของเคอร์เนล
mailq


2
@mailq ... ใช่ แต่มันไม่สลับหน่วยความจำของพื้นที่ผู้ใช้บ้างไหม? และถ้าเป็นเช่นนั้นฉันจะบอกได้อย่างไรว่าหน่วยความจำของโพรเซสใดที่แลกเปลี่ยนในขณะนั้น
Deshawn

คำตอบ:


18

kswapd กำลังจัดการพื้นที่สว็อปในการตอบสนองต่อความต้องการของหน่วยความจำที่มากกว่าทางกายภาพสำหรับกระบวนการทั้งหมด

มันเป็นกระบวนการที่ไม่เชื่อเรื่องพระเจ้ามันสนใจเฉพาะในสิ่งที่หน้ามีการเข้าถึงและเมื่อ (มันมีความซับซ้อนมากกว่านี้แน่นอน แต่เพื่อให้สิ่งที่ง่ายเราอาจดูด้วยวิธีนี้)

ดังนั้นคำถามที่แท้จริงคือ "กระบวนการใดที่มีภาระมากที่สุดในหน่วยความจำซึ่งทำให้ kswapd จำเป็นต้องเพจตลอดเวลา"

นั่นคือคำตอบที่ง่ายที่สุดโดยใช้ 'ด้านบน' และเปลี่ยนเป็นโหมดการเรียงลำดับการใช้หน่วยความจำ


ขอบคุณ !. ทำ skswapd เตะเข้ามาเฉพาะเมื่อหน้าจริงสัมผัสเกินจริงหรือมันเตะในแม้ว่ากระบวนการได้จัดสรรหน่วยความจำหรือแมปภูมิภาค SHM แต่ไม่ได้ใช้มัน? นั่นคือมันเกิดขึ้นเมื่อปัญหาเกิดขึ้นหรือทำหนังสือเก็บรักษาและแลกเปลี่ยนสิ่งต่าง ๆ ทั้งในและนอกแม้ว่าจะมีหน่วยความจำกายภาพ แต่เพียงเพราะกระบวนการบางอย่างไม่มีการใช้งาน ฯลฯ
Deshawn

ดังที่ฉันเข้าใจแล้ว kswapd จะอยู่ภายใต้สถานการณ์ปกติลบหน้าใด ๆ ออกจากหน่วยความจำหลักที่ไม่จำเป็นต้องมีเพราะหน้าใด ๆ ที่เป็นอิสระเป็นหน้าที่ที่สามารถใช้สำหรับการแคชหรือกระบวนการอื่น ๆ นั่นคือดีกว่าที่จะมีเพจเก่าที่ไม่ได้ใช้งานอยู่แล้วบนดิสก์แทนที่จะต้องเสียค่าใช้จ่ายในการย้ายมันช้าเพื่อตอบสนองคำขอหน่วยความจำจากกระบวนการอื่น
พอล

แม้ว่าเครื่องจำเป็นต้องใช้พื้นที่สว็อปจำนวนมาก แต่ก็ไม่ควรใช้ CPU 100% ในการทำเช่นนั้น มีบางอย่างแปลก ๆ
Zaz

@Zaz มันไม่ได้มากนักที่ใช้กำลังประมวลผลของ CPU เพื่อทำการสลับมันเป็นเพราะ CPU นั้นใช้ 100% เนื่องจาก IOWAIT แต่ละครั้งที่หน่วยความจำต้องเปลี่ยนจากดิสก์ซีพียูจะต้องนั่งรอและรอ - IOWAIT และไม่ได้ทำอะไรอย่างอื่น (โดยเฉลี่ย)
พอล

@ พอล: คุณแน่ใจหรือไม่ topกำลังบอกฉันว่าไม่มีการใช้เวลาในการรอ IO และเวลาเกือบ 100% กำลังถูกใช้ในระบบ ข้อมูลเพิ่มเติม: kswapd มักจะใช้ CPU 100% เมื่อมีการสลับการใช้งาน
Zaz

9

คุณสามารถสคริปต์มัน .. แต่คุณสามารถทำได้ผ่านทางด้านบน

Run top จากนั้นกดOตามด้วยpจากนั้นกดEnter

ตอนนี้กระบวนการทั้งหมดจะถูกจัดเรียงตามการใช้ swap และคุณสามารถดูว่ากระบวนการใดกำลังใช้งานอยู่


2
O นำเสนอตัวเลือกตัวกรองสำหรับฉันกด p แล้วป้อนให้ฉัน "'รวม' ตัวคั่นตัวกรองหายไป"
เงา

@Shadow ปัญหาเดียวกันนี่คือคำสั่งทางเลือกunix.stackexchange.com/questions/128953/…
Björn

8

หากคุณใช้ 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


มีสิ่งนี้ออกมาจากที่ใดในระบบของฉันใน Kubuntu 16.10 ด้วยวิธีแก้ปัญหาที่เปิดใช้งานแล้วในขณะที่ผ่านมา
jeteon

@ jeteon มีหลายปัญหาที่อาจทำให้เกิดพฤติกรรมนี้; สิ่งนี้เพิ่งเกิดขึ้นเป็นสิ่งที่พบได้บ่อยโดยเฉพาะ
Zenexer

ใช่. ฉันพบว่าecho 3 > /proc/sys/vm/drop_cachesมันบรรเทาลงเมื่อมันเริ่มเกิดขึ้น ฉันได้รับคำสั่งล่วงหน้าเกี่ยวกับงาน cron ล่วงหน้าและดูเหมือนว่าจะช่วยหรืออย่างน้อยก็ จำกัด ระยะเวลาของการสังหารหมู่ OOM เมื่อฉันไม่อยู่ที่คอมพิวเตอร์
jeteon

6

ดูเหมือนว่าจะมีข้อผิดพลาดในkswapdบางแห่งหวังว่าเฉพาะเมล็ดข้าวที่มีอายุมากกว่า

เกือบทุกวันในขณะนี้ kswapd ไปโจมตีอย่างสุ่มบนเครื่องบางเครื่องในคลัสเตอร์ที่ใหญ่กว่า CPU 100% ทั้งในกระบวนการ kswapd ไม่มีกระบวนการทำงานอื่น ๆ (ยกเว้น ssh shell), RAM ฟรีมากมาย (มากกว่า 700 MB) และไม่มีการใช้ SWAP เลย ไม่มีการสลับไม่มีการสลับเช่นกัน

ยังไม่มีคำอธิบายว่าทำไมเครื่องใดเครื่องหนึ่งถึงได้ถูกตีและอีกเครื่องไม่ได้ ดูเหมือนว่าจะไม่ได้รับการสุ่มอย่างสมบูรณ์เพราะโดยปกติแล้วจะกระทบกับเครื่องมากกว่าหนึ่งเครื่องภายในระยะเวลาอันสั้น ดูเหมือนว่าเครื่องจักรซึ่งไม่ได้ใช้งานเช่นเดียวกับเครื่องซึ่งอยู่ภายใต้แรงดันสูงจะมีผลกระทบน้อยกว่า (!) ดังนั้นจึงต้องทำอะไรบางอย่างกับภาระงานและยอดนิยมเฉพาะในกรณีที่เครื่องไม่ได้ใช้งานหรือยุ่งมาก

หากปัญหาการนัดหยุดงานไม่มีอะไรช่วยอีกต่อไป ฆ่ากระบวนการทั้งหมด (ซึ่งไม่ได้กลายเป็นทักษะไม่ได้), unmounting ระบบไฟล์ทั้งหมดไม่มีอะไร kswapdยังคงอยู่ที่ CPU 100% ฉันสงสัยว่ามีการแข่งขัน spinlock ในเมล็ดของ SMP แต่ก็เป็นไปได้ว่าฉันคิดผิด

อาจเห็นคำตอบserverfault.com/questions/316995/#493257ของฉัน

หมายเหตุ:

  • การรีบูตเครื่องที่ได้รับผลกระทบมักจะล้มเหลวเพราะกระบวนการปิดการทำงานเริ่มหยุดลง
  • ไม่มีการเชื่อมต่อโดยตรงกับอินเทอร์เน็ต สาเหตุต่างประเทศไม่น่าเป็นไปได้
  • ดูเหมือนว่าจะขึ้นอยู่กับประเภทของภาระงานที่เครื่องประมวลผลจากมุมมองของโหลดเพราะเรามีเครื่องที่ไม่เคยได้รับผลกระทบ (ยัง)
  • ขออภัยฉันไม่สามารถระบุเจาะจงมากขึ้นเกี่ยวกับสิ่งที่เราทำและสาเหตุ
  • ใช่ฉันกำลังเก็งกำไร เพราะมันเป็นสิ่งที่ทำให้งงมากในวันนี้

นี่คือประวัติศาสตร์ RedHat ยืนยัน: มันเป็นปัญหาของเคอร์เนล 2.6.18-194.el5 ร่วมกับไคลเอนต์ NFS ได้รับการแก้ไขในปี 2555 แล้ว ดูคำตอบที่เชื่อมโยงในข้อความของฉันสำหรับข้อมูลเพิ่มเติมเล็กน้อย หากคุณมาที่นี่ในวันนี้อาจเป็นสาเหตุอื่น
Tino

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