หลายๆ ตัวมันไว้ดูรายละเอียดการทำงานของเครื่องได้เยอะ
บางตัวอาจเฉพาะทาง แล้วก็ดูงงๆ หน่อย
แต่ใช้รวมกันก็ช่วยให้เรามีข้อมูลในการวิเคราะห์หาสาเหตุข้อขัดข้องต่างๆ ของระบบได้ดีขึ้น
รายการต่อไปนี้เป็นเครื่องมือที่ผมใช้อยู่บ่อยๆ ใครมีอะไรเสริมก็แนะนำเพิ่มได้เลยครับ
อันแรกเลยครับ เครื่องมือหลักประจำเครื่อง
[B][COLOR=#ff0000][SIZE=5]" top "[/SIZE][/COLOR][/B]
(capture ช้าไปสองวิ เสียดายจัง)
ไม่ต้องลงเพิ่ม ติดมากับ os อยู่แล้วไม่ว่าจะลงแบบ minimal ขนาดไหน
หรือถ้าทำหายไป มันจะอยู่ใน package “procps” ครับ
[COLOR=#666666][FONT=Tahoma][B]มันบอกอะไรบ้าง[/B]
ไล่ทีละบรรทัด เลยนะครับ (คิดจากค่าปกติของ centos ซึ่ง os อื่นๆ ก็คล้ายๆ กัน อาจมีแตกต่างบ้างแล้วแต่การปรับตั้งค่า)[/FONT][/COLOR]
[COLOR=#666666][FONT=Tahoma]บรรทัดบนสุด
top – [COLOR=red]09:13:20[/COLOR] [COLOR=green]up 187 days, 8:40[/COLOR], [COLOR=purple]1 user[/COLOR], [COLOR=blue]load average: 0.43, 0.66, 0.61[/COLOR]
[COLOR=red]สีแดง[/COLOR]: เวลาปัจจุบันของ server
[COLOR=green]สีเขียว[/COLOR]: uptime (ระยะเวลาตั้งแต่ boot OS ขึ้นมา)
[COLOR=purple]สีม่วง[/COLOR]: จำนวน user ที่ login เข้าไปใน shell (การ login หน้าเครื่อง + ssh ที่เปิด terminal เท่านั้น)
[COLOR=blue]สีน้ำเงิน[/COLOR]: load average : ปริมาณงานที่ “ค้าง” ในระบบเฉลี่ย ในรอบ 1 , 5 และ 15 นาทีตามลำดับ[/FONT][/COLOR]
[COLOR=#666666][FONT=Tahoma]
บรรทัดที่ 2: บรรทัดนี้จะบอกข้อมูลเกี่ยวกับ process ในเครื่องครับ
Tasks: [COLOR=red]183 total[/COLOR], [COLOR=green]3 running[/COLOR], [COLOR=purple]180 sleeping[/COLOR], [COLOR=blue]0 stopped[/COLOR], [COLOR=#FFC0CB]0 zombie[/COLOR]
[COLOR=red]สีแดง[/COLOR]: จำนวน process ทั้งหมด
[COLOR=green]สีเขียว[/COLOR]: จำนวน process ที่กำลังเรียกใช้ CPU อยู่ “ณ เวลานั้นๆ”
[COLOR=purple]สีม่วง[/COLOR]: จำนวน process ที่ไม่มีการทำงาน/ไม่มีการเรียกใช้ CPU อยู่
[COLOR=blue]สีน้ำเงิน[/COLOR]: process ที่อยู่ในสถานะ “หยุด” (ไอนี้ไม่แน่ใจครับ คู่มือมันเขียนแบบนั้นแต่ผมไม่เคยเห็นตัวเลขขึ้นซักที)
[COLOR=#FFC0CB]สีชมพู[/COLOR]: process ผีดิบ => มันคือ process ที่ตาย/จบการทำงานไปแล้ว แต่ยังไม่สามารถ clear ออกจากหน่วยความจำได้ ส่วนมากจะเป็นพวก process ที่รอการตอบสนองจาก hardware ต่างๆ อยู่ครับ (รวมถึงแรมด้วย)
[/FONT][/COLOR]
[COLOR=#666666][FONT=Tahoma]บรรทัดที่ 3: การใช้งาน CPU อันนี้มีของเล่นนิดหน่อยครับ สำหรับเครื่องที่ cpu หลาย core หรือหลาย cpu
Cpu(s): 4.0%us, 0.7%sy, 0.0%ni, 94.1%id, 0.9%wa, 0.0%hi, 0.3%si, 0.0%st[/FONT][/COLOR]
[COLOR=#666666][FONT=Tahoma]สังเกต ดีๆ มันจะเขียนหน้าบรรทัดว่า Cpu(s) <– ตรง (s) หมายความว่าเป็นภาพรวม cpu ทุก core
ให้กดแป้นพิมพ์เลข 1 ตรงแป้นพิมพ์ธรรมดา ที่อยู่ข้างๆ ปุ่มตัวหนอน (` / ~) แล้วมันจะแตกออกมาเป็นแบบนี้ครับ[/FONT][/COLOR]
[COLOR=#666666][FONT=Tahoma]Cpu0 : 27.6%us, 7.2%sy, 0.2%ni, 53.6%id, 10.9%wa, 0.0%hi, 0.5%si, 0.0%st
Cpu1 : 28.1%us, 7.2%sy, 0.1%ni, 55.3%id, 9.0%wa, 0.0%hi, 0.4%si, 0.0%st
Cpu2 : 27.8%us, 7.0%sy, 0.2%ni, 62.0%id, 2.8%wa, 0.0%hi, 0.2%si, 0.0%st
Cpu3 : 28.1%us, 7.3%sy, 0.2%ni, 58.8%id, 3.4%wa, 0.2%hi, 2.1%si, 0.0%st[/FONT][/COLOR]
[COLOR=#666666][FONT=Tahoma]แยกกันให้เห็นหมดเลย ว่า CPU ไหนกำลังทำอะไรอยู่
ทีนี้ แต่ละ column ที่มีตัวอักษรย่อสองตัว มีความหมายต่างกันตามนี้ครับ[/FONT][/COLOR]
[COLOR=#666666][FONT=Tahoma]us => user :: เป็นการเรียกใช้ CPU ตามปกติของโปรแกรม ที่เป็นการประมวลผลภายในโปรแกรมนั้นๆ
sy => system :: การเรียกใช้คำสั่งในระดับ kernel ที่มีการประมวลผลอยู่ภายใน kernel โดยไม่เรียกใช้ hardware
ni => nice :: การจัดลำดับความสำคัญของการประมวลผล (priority) ไว้สลับการทำงานของ process ที่มี priority ต่างๆ กันเวลาเรียกใช้ cpu พร้อมๆ กัน
id => idle :: cpu ที่ว่างงาน
wa => iowait :: เป็นการ ‘เสีย เวลารอ’ การเรียกใช้ และติดต่อกับ hardware ตั้งแต่ harddisk ram การ์ดจอ การ์ดแลน (แต่ส่วนใหญ่ก็ harddisk แหละ)
hi => ?
si => ? (สามอันนี้ขออภัยด้วยครับ ไม่ทราบจริงๆ ส่วนมากก็ไม่ค่อยขึ้นมาให้เห็นเท่าไหร่ด้วย)
st => ?[/FONT][/COLOR]
[COLOR=#666666][FONT=Tahoma]
บรรทัดที่ 4-5: เกี่ยวกับหน่วยความจำ ขอรวบเป็นหัวข้อเดียวเลยนะครับ เพราะมันเกี่ยวข้องกัน
Mem: [COLOR=red]8310380k total[/COLOR], [COLOR=#FFC0CB]4970936k used[/COLOR], [COLOR=green]3339444k free[/COLOR], [COLOR=orange]217448k buffers[/COLOR]
Swap: [COLOR=purple]6225904k total[/COLOR], [COLOR=blue]52816k used[/COLOR], [COLOR=#A52A2A]6173088k free[/COLOR], 3001860k cached
[COLOR=red]สีแดง[/COLOR]: RAM ทั้งหมดที่ติดตั้งไว้ และ OS มองเห็น (หมายถึงหน่วยความจำหลักอย่างเดียวครับ)
[COLOR=#FFC0CB]สีชมพู[/COLOR]: ใช้แรมไปแล้ว “ทั้งหมด” เท่าไหร่
[COLOR=green]สีเขียว[/COLOR]: แรมที่ยังว่างจริงๆ (คือไม่ได้จองให้กับอะไรเลย)
[COLOR=orange]สีส้ม[/COLOR]: แรมที่ถูกใช้เป็น buffer ที่พักข้อมูลก่อนที่จะมีการอ่าน/เขียนลง harddisk หรือ CPU
[COLOR=purple]สีม่วง[/COLOR]: swap space พื้นที่แรมเสมือนทั้งหมด ที่ใช้พื้นที่จาก harddisk เก็บข้อมูลแทนแรม — บน windows มันจะมีชื่อว่า pagefile
[COLOR=blue]สีน้ำเงิน[/COLOR]: ปริมาณการใช้งาน swap space มากน้อยไม่ใช่ปัญหาเท่าไหร่ (ถึงมันจะไม่ควรใช้ก็ตาม) แต่ถ้าตัวเลขแกว่งไปมา (พร้อมกับ iowait พุ่ง) หมายความว่ามีปัญหาแรมไม่พอจนต้องมาเขียนลง swap space
[COLOR=#A52A2A]สีน้ำตาล[/COLOR]: พื้นที่ swap space ที่ไม่ได้ใช้งาน
สีดำ: เป็น file system memory cache ครับ คือ linux จะมีการใช้ ram เพื่อเก็บข้อมูลไฟล์ที่มีการเรียกใช้งานบ่อยๆ ไว้ใน ram (เผื่อมีอะไรก็อ่านเอาจากแรมไปเลย เร็วกว่าเยอะ)[/FONT][/COLOR]
[COLOR=#666666][FONT=Tahoma]วิธีคิดพื้นที่ แรมว่าง ให้คิดจาก free + cached ไม่นับพื้นที่ cache เป็นพื้นที่ที่มีการใช้งาน
เพราะมันจะถูกลบออกได้เสมอถ้ามีความต้องการ ใช้แรมจาก process เยอะๆ[/FONT][/COLOR]
[COLOR=#666666][FONT=Tahoma]
ส่วนพื้นที่ที่เหลือด้านล่าง จะเป็นรายการ process ทั้งหมด (แสดงเท่าที่พื้นที่จอเหลือ)
เรียงลำดับ ตามปริมาณการใช้งาน CPU ของ process นั้นๆ (เปลี่ยนได้ครับ)[/FONT][/COLOR]
[COLOR=#666666][FONT=Tahoma]มีหัว ข้อตามนี้
[B]PID : หมายเลข process id
USER : user ที่ process ทำงาน
[/B]PR : priority ของ process ที่ nice เท่ากัน
NI : รหัส nice เรียงความสำคัญของ process (ยิ่งน้อยยิ่งสำคัญ)
VIRT : ปริมาณการใช้งาน virtual image ทั้งหมด (ตั้งแต่ process ยันเตไปถึงการเรียก library)
RES / SHR : การใช้แรมส่วนของ private (เฉพาะภายใน app) / shared (ram กลางของระบบ)
S : สถานะของ process
%CPU : ปริมาณการใช้งาน CPU (นับต่อ core นะครับ) สมมติ cpu 4 core + process รัน 4 thread แต่ละ thread เรียกใช้ cpu เต็มที่ มันก็ขึ้น 400 ขึ้นมาได้เหมือนกัน
%MEM : ปริมาณการใช้งาน ram เป็น %
TIME+ : “ระยะเวลา” ที่เรียกใช้ CPU ทั้งหมดตั้งแต่รัน process (เพราะ process ไม่ได้ทำงานตลอดเวลา)
COMMAND : คำสั่งที่ใช้รัน process[/FONT][/COLOR]
[COLOR=#666666][FONT=Tahoma]
ลูกเล่นเพิ่มเติมของ top สามารถหาอ่านได้จากคำสั่ง man top นะครับ
มีอีก เพียบ นี่แค่แซมเปิ้ลๆ[/FONT][/COLOR]