บทความนี้ น่าสำหรับแฟนลินุกซ์/อูบุ้นทู เกี่ยวกับ ประโยชน์ของคำสั่ง top, atop, renice, ionice, kill, และ free -m
เครื่องคอมฯช้า ก็คือคอมฯที่ไม่ตอบสนองตามเวลาอันควร หรือใช้เวลาทำงานนานเกินไป สาเหตุที่พบบ่อยพอๆกัน 3 อย่าง คือ (รายละเอียดหรือคำสั่งในบทความนี้ สำหรับลินุกซ์)
1. มีโปรแกรมหนึ่ง ครอบครองวงรอบของ CPU ไปหมดจนกันไม่ให้โปรแกรมอื่นเข้าหน่วยประมวลผล ซึ่งอาจเป็นได้สองแบบคือ เพราะโปรแกรมนั้นต้องประมวลงานจำนวนมาก หรือโปรแกรมเกิดวิ่งติดกักเลยทำอะไรอยู่อย่างนั้นซ้ำๆไม่หยุดไม่เลิกซะที
วิธีง่ายๆ ที่จะตรวจว่าเกิดกรณีที่ 1 นี้หรือไม่ ให้ใช้คำสั่ง top แล้วดูเปอร์เซ็นต์ที่ cpu ถูกใช้ (%us) และเปอร์เซ็นต์ที่ cpu ว่าง (%id หมายถึง idle/ free) ดูรูป
ตัวอย่าง งานบางเช่น encoding วีดิทัศน์ ถ้ายิ่งใช้ cpu มากเท่าไรจะเสร็จเร็วเท่านั้น
วิธีแก้ สามารถกำหนดปริมาณ cpu ด้วยคำสั่ง renice เช่น
renice 20 5496
ตัวเลขตัวแรก กำหนด ส่วนแบ่งให้โปรแกรมอื่น โดยสเกลเต็มระหว่าง -20 ถึง +20 (คือไม่แบ่งให้เลย จนให้เต็มที่)
ตัวเลขที่สอง คือเลขประจำ process (process id หรือ pid) บอกอยู่ในภาพ
อีกคำสั่งที่อาจใช้ คือ kill ตามด้วยเลข process เช่น (kill ชื่อมันบอกแล้วว่าให้หยุด process นั้น)
kill 5496
2. หน่วยความจำ RAM ถูกใช้เกือบหมด เนื่องจากเปิดโปรแกรมมากไป หรือมีโปรแกรมที่ใช้หน่วยความจำมากไป เมื่อความจำ RAM แทบไม่มีหลือระบบปฏิบัติการจะโยกงานจากโปรแกรมใหม่จะไปใช้ความจำจากฮาร์ดดิสก์แทน (เรียกความจำ virtual memory หรือ swap) ซึ่งจะช้ามาก เครื่องคอมฯจะต้องจัดการจัดสรรในลักษณะเช่น ขณะที่ใช้โปรแกรมหนึ่งอยู่ และงานของโปรแกรมที่สองถูกโยกไปอยู่ที่ swap แล้ว เมื่อจะเรียกใช้โปรแกรมที่สอง ระบบจะต้องโยกบางส่วนใน RAM ออกไปที่ฮาร์ดดิสก์ก่อนถึงจะมีพื้นที่สำหรับย้ายโปรแกรมที่ต้องการใช้ออกจาก swap ถ้าเป็นโปรแกรมเดียวกันก็ไม่ค่อยรู้สึกความแตกต่าง แต่ถ้าเป็นการเปลี่ยนไปมาระหว่างสองโปรแกรมจะเห็นช่วงที่คอมพิวเตอร์ไม่ตอบสนอง (อาการช้า เกิดจากการโยกไปมาระหว่าง swap และ RAM)
วิธีตรวจดู ความจำ RAM ใช้คำสั่ง
free -m
ได้ดังภาพ 2
ถ้าความจำ RAM ถูกใช้เกือบหมด จะมีการใช้ความจำส่วน swap area บ้างแล้ว
ในภาพที่ 1 บางกรณี CPU อาจดูว่ามีหน่วยความจำว่างอยู่ แต่บางส่วนอาจจะกำลังใช้ในลักษณะการคอยการทำงานชนิด Input/Output หรือเรียกว่า I/O (ค่าเปอร์เซ็นต์ที่รอใช้ ดูที่ %wa)
ถ้าสังเกตว่า คอมฯช้าไม่ทำงานที่สั่งอย่างรวดเร็วเมื่อเปลี่ยนแปลงระหว่างโปรแกรม เนื่องจากเกิดการโยกระหว่างที่ swap และ RAM การแก้ คิอต้องปิดโปรแกรมที่ใช้ความจำมากที่สุด เพื่อให้มีความจำ RAM เหลือมากขึ้น
3. โปรแกรมอาจทำงานที่เรียก I/O มากๆ เช่นการคัดลอกไฟล์ เช่นไฟล์ใหญ่ๆ ขณะที่กำลังคัดลอกจะต้องเรียกข้อมูลมากๆจากฮาร์ดดิสก์ ขณะที่ CPU จะใช้เวลาไปกับการคอยให้ข้อมูลอ่านจากฮาร์ดดิสก์ ทำให้โปรแกรมอื่นไม่สามารถเข้า CPU ได้
การตรวจสอบปัญหาที่ 3 นี้ ก็ใช้ คำสั่ง top ดูภาพที่ 1 ว่า มี %wa เปอร์เซ็นต์ของ CPU ที่กำลังคอย และที่คอลัมน์ S (วงสีเขียว) ถ้าเป็น "D" หมายถึง กำลังคอย I/O
หรืออาจใช้คำสั่ง atop
ซึ่งเปอร์เซ็นต์คอยจะใช้ w
การแก้ ถ้าตรวจสอบแล้วพบว่าเป็นปัญหา I/O สามารถใช้คำสั่ง ionice ในกการกำหนดระดับความสำคัญ เช่น
ionice -p30956 -n7
ครั้งนี้ตัวเลขของ process อยู่หลัง -p และระดับความสำคัญให้งาน I/O สูงสุด (0) และต่ำสุด (7) เขียนเลขหลัง -n
ต้องลองนะครับ ถึงจะเข้าใจดีขึ้น
..... อ่านต่อได้ที่: https://www.gotoknow.org/posts/235475