หากคุณประสบปัญหา ssh login เข้าเครื่อง Linux Server แล้วต้องรอหลายวินาที กว่า prompt login จะขึ้น
แต่หลังจาก login เข้าไปในระบบได้ ก็สามารถรันคำสั่งต่างๆ ทำงานได้ ไม่ได้ช้ามากแต่ประการใด
บทความนี้อาจช่วยคุณแก้ไขปัญหาได้
คำสั่งที่ใช้ดูรายงานการทำงานของ CPU คือ mpstat อยู่ในชุดโปรแกรม sysstat
รันคำสั่ง mpstat ตามด้วยออปชั่น “-P ALL” เพื่อดูผลลัพธ์แยกตาม CPU
หมายเหตุ นอกจากคำสั่ง mpstat แล้ว อาจใช้คำสั่ง top ดูโหลดของ CPU ก็ได้
[root@devel ~]# mpstat -P ALL Linux 2.6.18-194.el5 (devel.example.com) 05/22/2011
04:00:49 PM CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s 04:00:49 PM all 25.13 0.00 0.09 0.14 0.01 0.08 0.00 74.55 2267.62 04:00:49 PM 0 9.39 0.00 0.16 1.04 0.09 0.92 0.00 88.40 2267.62 04:00:49 PM 1 21.11 0.00 0.11 0.17 0.00 0.00 0.00 78.62 0.00 04:00:49 PM 2 27.66 0.00 0.09 0.09 0.00 0.00 0.00 72.15 0.00 04:00:49 PM 3 28.54 0.00 0.09 0.07 0.00 0.00 0.00 71.30 0.00 04:00:49 PM 4 31.10 0.00 0.10 0.07 0.00 0.00 0.00 68.73 0.00 04:00:49 PM 5 29.38 0.00 0.10 0.05 0.00 0.00 0.00 70.47 0.00 04:00:49 PM 6 16.91 0.00 0.08 0.04 0.00 0.00 0.00 82.97 0.00 04:00:49 PM 7 20.46 0.00 0.08 0.04 0.00 0.00 0.00 79.42 0.00
จากคำสั่ง mpstat นี้จะเห็นว่า เฉพาะ CPU0 เท่านั้นที่มีตัวเลข “intr/s” ไม่เท่ากับ 0
“intr/s” คือจำนวน interrupts (IRQ) ที่ CPU ได้รับ เฉลี่ยต่อ วินาที
การ ssh login เข้าเครื่อง ถือเป็นการ interrupts อย่างหนึ่ง ที่ต้องมี CPU มาทำหน้าที่รับ ก่อนส่งไปประมวลผลต่อไป
การแก้ไข
โปรแกรมที่สามารถช่วยกระจายการรับ interrupts ให้ CPU หลายตัวได้ คือ irqbalance
โดยดีฟอลต์ของการติดตั้ง Linux ส่วนใหญ่แล้ว จะรัน irqbalance ด้วย แต่ถ้าปิดไป แนะนำให้รันขึ้นมาใหม่ และรันทิ้งไว้ตลอดเวลา สำหรับเครื่องที่มี CPU หลายตัว หรือหลาย Core
ตรวจสอบการรัน irqbalance ด้วยคำสั่ง service หรือคำสั่ง ps
[root@devel ~]# service irqbalance status irqbalance is stopped [root@devel ~]#
[root@devel ~]# ps -ef | grep irqbalance [root@devel ~]#
รันเซอร์วิส irqbalance
[root@devel ~]# service irqbalance start Starting irqbalance: [ OK ]
ตรวจสอบดูโปรเซสอีกครั้ง
[root@devel ~]# ps -ef | grep irqbalance root 19003 1 0 16:03 ? 00:00:00 irqbalance
หลังจากรันเซอร์วิส irqbalance ไปซักพักแล้ว ลองรันคำสั่ง mpstat อยู่เรื่อยๆ จะเห็นตัวเลข “intr/s” ของ CPU อื่นๆ เริ่มขึ้นมา แสดงว่า เริ่มมีการกระจาย IRQ ให้ CPU หลายๆ ตัวแล้ว
[root@devel ~]# mpstat -P ALL Linux 2.6.18-194.el5 (devel.example.com) 05/22/2011
04:05:10 PM CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s 04:05:10 PM all 25.13 0.00 0.09 0.14 0.01 0.08 0.00 74.55 2268.53 04:05:10 PM 0 9.39 0.00 0.16 1.04 0.09 0.92 0.00 88.40 2267.99 04:05:10 PM 1 21.11 0.00 0.11 0.17 0.00 0.00 0.00 78.62 0.00 04:05:10 PM 2 27.66 0.00 0.09 0.09 0.00 0.00 0.00 72.15 0.00 04:05:10 PM 3 28.54 0.00 0.09 0.07 0.00 0.00 0.00 71.30 0.01 04:05:10 PM 4 31.10 0.00 0.10 0.07 0.00 0.00 0.00 68.73 0.01 04:05:10 PM 5 29.37 0.00 0.10 0.05 0.00 0.00 0.00 70.47 0.01 04:05:10 PM 6 16.91 0.00 0.08 0.04 0.00 0.00 0.00 82.97 0.08 04:05:10 PM 7 20.46 0.00 0.08 0.04 0.00 0.00 0.00 79.42 0.09
ลอง ssh login อีกครั้ง น่าจะดีขึ้น
ขอบคุณครับ แต่ใน ubuntu ใส่คำสั่ง mpstat -P ALL แล้วมันไม่ขึ้นค่า
intr/s
ครับ