สำหรับ Lenovo T400 และ Ubuntu ไฟสำหรับเขียนฮาร์ดไดรฟ์ยังคงกะพริบอยู่ ฉันสงสัยว่าใน Linux เป็นไปได้หรือไม่ที่กระบวนการจะทำ I / O กับฮาร์ดไดรฟ์? เช่นเดียวโดยtop
คุณสามารถค้นหาสิ่งที่กระบวนการกำลังใช้ซีพียูและหน่วยความจำมากที่สุด
สำหรับ Lenovo T400 และ Ubuntu ไฟสำหรับเขียนฮาร์ดไดรฟ์ยังคงกะพริบอยู่ ฉันสงสัยว่าใน Linux เป็นไปได้หรือไม่ที่กระบวนการจะทำ I / O กับฮาร์ดไดรฟ์? เช่นเดียวโดยtop
คุณสามารถค้นหาสิ่งที่กระบวนการกำลังใช้ซีพียูและหน่วยความจำมากที่สุด
คำตอบ:
ไอโซโทปเป็นเครื่องมือที่ดีสำหรับสิ่งที่คุณต้องการ นอกจากนี้ยังอนุญาตให้หนึ่งแสดงจำนวน I / O สะสมบน DISK READ, DISK WRITE, SWAPIN และ IO ใด ๆ (เปอร์เซ็นต์โดยรวม) นี่คือผ่านอินเทอร์เฟซที่ดี:
ชอบtop
, นำเสนอค่อนข้างยุ่ง อีกอย่างคือมันไม่มีตัวเลือกมากมายที่top
มี (เช่นฉันไม่สามารถเลือกที่จะซ่อนคอลัมน์ใด ๆ ที่ฉันไม่สนใจ) ได้ แต่เครื่องมือนั้นดีเกินพอสำหรับวัตถุประสงค์เฉพาะ
-o
( --only
) เพื่อกรองงานทั้งหมดที่ไม่ได้ทำ I / O ใด ๆ ทำให้รายการมีผู้คนน้อยลง
คุณสามารถใช้lsof
( man lsof ) ต่อไปนี้จะส่งคืนรายการไฟล์ทั้งหมดที่เปิดสำหรับการเขียน:
lsof | grep -e "[[:digit:]]\+w"
w
จากคำสั่งดังกล่าวทำให้คุณ grep สำหรับไฟล์ที่เปิดสำหรับการเขียนเท่านั้น ไฟล์ที่เปิดสำหรับการเขียนและการอ่าน ( u
) จะไม่ปรากฏ แต่ยังสามารถเขียนได้ หากคุณต้องการที่จะเห็นไฟล์ที่เปิดสำหรับการเขียนและสำหรับการอ่าน + เขียนฉันเชื่อว่านี่คือสิ่งที่คุณกำลังมองหา:lsof | grep -e "[[:digit:]]\+[wu]\{1\}"
strace
ใช้
โดยเฉพาะอย่างยิ่งสำหรับการทำงานของดิสก์ต่ำจำเป็นต้องใช้ไอโซโทปในโหมดแบทช์เพื่อป้องกันไม่ให้สายการเข้าถึงสั้น ๆ หายไปอย่างรวดเร็ว คำตอบโดยฉันจะเข้าสู่ระบบไฟล์อ่าน / เขียนโดยชื่อไฟล์ใน Linux ได้อย่างไร แสดงวิธีการทำ
จนถึง
iotop
เป็นทางออกโดยรวมที่ดีที่สุด คำสั่งต่อไปนี้ให้ผลลัพธ์แบบเรียลไทม์ของกระบวนการทั้งหมดโดยใช้ดิสก์
iotop -bktoqqq -d .5
where: -b is batch mode
-k is kilobytes/s
-t adds timestamp
-o only show processes or threads actually doing I/O
-qqq removes output headers
-d .5 updates every .5 seconds
เมื่อคุณมีรหัสกระบวนการคุณยังสามารถค้นหาไฟล์ด้วย
lsof -p $PID