ความหมายของ Load average บน CentOS

โปรแกรมบน CentOS ที่ควรติดตั้งใช้งานร่วมกับ VoIP Server

ความหมายของ Load average บน CentOS

โพสต์โดย nuiz » 29 มี.ค. 2011 15:54

เวลาต้องการเช็คว่า server เปิดเครื่องมากี่วันแล้ว หรือต้องการดูว่าตอนนี้ server ทำงานหนักหรือเปล่า ผมมักจะใช้คำสั่ง "uptime" ครับ ที่จริงใช้ "top" ก็ได้
โค้ด: เลือกทั้งหมด
15:51:47 up 4 days, 20:29,  2 users,  load average: 0.15, 0.31, 0.27

สำหรับท่านที่ยังไม่ทราบว่าคำสั่งนี้บอกอะไรบ้าง ผมขอแนะนำดังนี้ครับ
15:51:47 คือเวลาปัจจุบัน
up 4 days, 20:29 คือเปิด server มาได้ 4 วัน กับอีก 20 ชั่วโมง กับอีก 29 นาทีแล้ว
2 users คือจำนวน user ที่ล๊อกอินค้างอยู่ใน server (ถ้าอยากรู้ว่าใครล๊อกอินอยู่ ใช้คำสั่ง who ครับ)
load average: 0.15, 0.31, 0.27 คือโหลดโดยเฉลี่ยของ server ในช่วง 1 นาที, 5 นาที และ 15 นาทีที่ผ่านมาตามลำดับ

ผมจะมาโฟกัสที่ค่า load average ครับ (อ่านจากหลายๆบทความใน internet แล้วเอามาสรุปอีกทีครับ)

load average เป็นค่าที่แสดงอายุและ/หรือระยะเวลาสถานะหนึ่งๆของระบบในช่วงเวลาที่ผ่านมา สถานะที่ว่าก็คือ CPU load ครับ (แต่เป็นคนละค่ากับ CPU pecentage) วัดเทียบกับ CPU load เพราะว่าเขากำหนดมาเป็นแบบนี้ ค่าที่ปกติจะมีไม่เกิน 1 สำหรับ cpu แบบ single-core ดังนั้นถ้าในเครื่องใช้ cpu แบบ single core (ผมว่าน่าจะเป็น cpu พวก celeron, pentium 3, pentium 4 ที่ไม่ใช่ hyper treading, และพวกอื่นๆที่ไม่ใช่ dual core หรือ quad core :D ) แล้วมี load average เกิน 1 แสดงว่าเครื่องทำงานหนักแล้ว หรือมี software บางตัวที่ทำให้เครื่องต้องทำงานหนัก กิน cpu กิน ram ส่วนมากก็เป็นปัญหาที่เทคนิคการเขียนโปรแกรมหล่ะครับ ว่ากันว่าโปรแกรมที่เขียนด้วยภาษา C ถ้าเลือกใช้ฟังก์ชั่นไม่เหมาะสม ก็จะทำให้เวลารันโปรแกรม มันจะกิน resource ในเครื่องเยอะเกินไป เครื่องที่ใช้ cpu แบบ dual-core ควรมี load average ไม่เกิน 2 และไม่ควรเกิน 4 สำหรับ cpu แบบ quad core

Load Average เป็นคนละอย่างกับ CPU Pecentage นะครับ

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

ใน Linux มีคำสั่ง top ซึ่งจะโชว์ค่า CPU percentage ออกมา โดยมันจะวัดว่าแต่ละโปรแกรมใช้ CPU ไปกี่ % สูงสุดคือ 100% ซึ่งถ้า top โชว์ว่าโปรแกรม A ใช้ไป 90% CPU ก็หมายความว่า โปรแกรม top พบว่า CPU ต้องประมวลผลโปรแกรม A เป็นระยะเวลาที่รวมแล้วคิดเป็น 99 % ของเวลาที่สุ่มเช็ค อีก 1% ก็บริการโปรแกรมอื่น

ตัวอย่างสมมุติว่าช่วงเวลาสุ่มคือ 10 วินาที โปรแกรม A มีการเรียกใช้งาน CPU เป็นเวลารวมกันถึง 9 วินาที (อาจจะมีการเรียกครั้งเดียวหรือหลายๆครั้งก็ได้) มีเวลาให้โปรแกรมอื่นเรียกใช้ CPU ได้แค่ 1 วินาที โปรแกรมอื่นต้องรอให้ CPU ว่างก่อนจึงจะทำงานได้ ส่งผลให้โปรแกรมอื่นทำงานได้ช้าลง จำไว้ครับว่า ถ้า CPU ทำงานนึงอยู่มันจะอุทิศตัวให้งานนั้น 100 % เต็ม งานอื่นต้องรอเข้าคิวไปก่อน มันประมวลผลได้ทีละงานเท่านั้น

ถ้ายังไม่เคลียร์ โปรแกรมมันทำงานด้วยตัวของมันเองไม่ได้ มันเป็นเพียงแค่ code ที่คนเขียนขึ้นมา ต้องมีอะไรสักอย่างมาประมวลผลมัน โปรแกรมมันถึงจะทำงานได้ อะไรสักอย่างที่ว่าน้นก็คือ CPU ไงอ่ะครับ โปรแกรมไหนที่มีการเรียกใช้งาน CPU หนักๆ ก็อาจจะไม่ได้เกิดจากโปรแกรมมีปัญหาหรือเขียน code ผิด แต่มีอะไรสักอย่างในเครื่องที่โปรแกรมต้องการแล้วมันไม่มีให้ เช่น mem เหลือน้อย harddisk เต็ม เป็นต้นครับ

CPU Percentage เรียกอีกอย่างหนึ่งว่า CPU Utilization ครับ มีหน่วยเป็น % เช่น 10%, 25% หรือ 100%


Load Average แตกต่างจาก CPU Percentage อยู่ 2 อย่าง ได้แก่
1. Load average วัดแนวโน้ม (trend) ในการใช้งาน CPU ในขณะที่ CPU percentage วัดปริมาณการใช้งาน CPU เดี๋ยวนั้น
2. Load average จะรวมทุกๆความต้องการใช้ CPU ในขณะที่ CPU percentage วัดแค่ภายในช่วงเวลาที่ตรวจสอบเท่านั้น

และสำหรับผม ผมจะเช็ค load average ก่อน ถ้าเจอว่ามันมีค่าสูงผิดปกติ เช่น บนเครื่อง cpu แบบ quad core มี load average สูงเกิน 4 แสดงว่ามีโปรแกรมอย่างน้อย 1 ตัวที่บริโภค CPU เกือบจะตลอดเวลา ผมก็จะมาเช็คด้วยคำสั่ง top ว่าโปรแกรมตัวไหนที่มีปัญหาอยู่ ก็อาจจะ stop สักพักแล้ว start ขึ้นมาใหม่

พอเป็น idea ครับ
** หากมีปัญหากับอุปกรณ์ที่ซื้อมาเองหรือบริการที่ทำขึ้นมาเอง ให้โพสต์ถามในเว็บบอร์ดนี้นะครับ **
** งานเร่งด่วนติดต่อว่าจ้างที่เบอร์ 08-5161-9439 อีเมล์ iamaladin@gmail.com ไลน์ NuizVoip ครับ **
nuiz
Diamond Member
 
โพสต์: 6993
ลงทะเบียนเมื่อ: 24 มี.ค. 2010 09:33

ย้อนกลับไปยัง CentOS - The Community Enterprise Operating System

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และ บุคคลทั่วไป 0 ท่าน