Thrash
บทความนี้มีชื่อเป็นภาษาอังกฤษ เนื่องจากยังไม่มีชื่อภาษาไทยที่กระชับ เหมาะสม, ไม่ปรากฏคำอ่านที่แน่ชัด หรือไม่ปรากฏคำแปลที่ใช้ในทางวิชาการ |
Thrash ในความหมายเชิงวิทยาการคอมพิวเตอร์ หมายถึงปรากฏการณ์ที่คอมพิวเตอร์มีประสิทธิภาพการทำงานลดลง อันเนื่องมาจากการใช้เวลาในการสับเปลี่ยนกันใช้ทรัพยากรหลายครั้งมาก ปรากฏการณ์ที่มักจะพบบ่อยอาทิเช่น การสับเปลี่ยนหน้า (paging) ใน หน่วยความจำเสมือน ซึ่งใช้ หน่วยความจำจริง เต็มแล้ว ทำให้เกิด Page Fault หลายครั้งและต้องเสียเวลาในการสับเปลี่ยนหน้าในแต่ละครั้ง ส่งผลให้การทำงานของคอมพิวเตอร์ช้าลง
การ Thrash ในหน่วยความจำเสมือน
[แก้]การ Thrash ในหน่วยความจำเสมือน เกิดจากการที่โปรเซสหลายโปรเซสสับเปลี่ยนหน้า (page) ของตนเองเข้าทำงานใน หน่วยความจำกายภาพ จนกระทั่งหน่วยความจำกายภาพเต็ม และมีโปรเซสเข้าทำงานอีกจำนวนมาก ทำให้เมื่อโปรเซสเริ่ม ทำงาน ก็จะมีการสับเปลี่ยนหน้า (page) ของโปรเซสอื่นออกแล้วเอาหน้าของโปรเซสที่จะทำงานสับเปลี่ยนเข้ามาแทน การสับเปลี่ยนหน้านั้นเป็นการติดต่อกับฮาร์ดดิสก์ ซึ่งใช้เวลาในการเข้าถึงนานมาก พอโปรเซสนี้ทำงานเสร็จ ก่อนโปรเซสอื่น เข้ามาทำงานก็ต้องมีการสับเปลี่ยนหน้า (page) ของโปรเซสนั้นเข้ามาอีกและเอาหน้าของโปรเซสแรกออกไป ทำให้ ทุกๆโปรเซส ต้องเสียเวลาการทำงานในส่วนที่สับเปลี่ยนหน้านี้มาก อีกทั้งในช่วงที่สับเปลี่ยนหน้า CPU จะว่าง จึงนำโปรเซส ใหม่เข้ามาอีก ซึ่งยิ่งสร้างปัญหาเข้าไปอีก จึงให้ประสิทธิภาพการทำงานของคอมพิวเตอร์ลดลงอย่างมาก
วิธีการตรวจสอบ Thrash โดยใช้ Working-Set Model
[แก้]Working-Set คือเซตของ page ที่ถูกใช้ในช่วงใดๆช่วงหนึ่ง ซึ่งอาจถูกกำหนดโดยเวลา หรือจำนวนคำสั่ง อาทิ 5 มิลลิวินาที หรือ 10,000 คำสั่ง เป็นต้น เรียกช่วงที่ถูกกำหนดว่า (Working-Set Window :)
Working Set ที่มีขนาดใหญ่แสดงว่าในขณะนั้นมีการใช้งานทรัพยากรเป็นจำนวนมากในระยะเวลาสั้น ซึ่งอาจเกิด Thrash ได้ วิธีการป้องกัน Thrash ก็คือ การตั้งลิมิตไม่ให้ขนาดของ Working Set มีค่าเกินค่าค่าหนึ่งนั่นเอง เมื่อ Working Set มีขนาดมากกว่าค่าลิมิต ก็ต้องกันไม่ให้โปรเซสใหม่เข้าทำงาน และเลือกลบโปรเซสบางตัวออกบ้าง จนกว่า Working Set จะมีขนาดน้อยกว่าค่าลิมิตที่ตั้งไว้
Page Fault Frequency
[แก้]Page Fault Frequency เป็นอีกวิธีการหนึ่งที่การป้องการ Thrash โดยการนับความถี่ของการที่เกิด Page Fault ถ้าเกิดความถี่ของ Page Fault มากเกินไป โดยเราจะกำหนดขีดจำกัดบน ( Upper Threshold ) คือถ้ามากกว่าที่เราตั้งไว้ แสดงว่าเกิด Page Fault หลายครั้ง ก็จะควรป้องกันไม่ให้โปรเซสใหม่ เข้ามาทำงาน และลดจำนวนโปรเซสลง แต่ถ้าความถี่ในการเกิด Page Fault น้อยเกินไป โดยเราจะกำหนดขีดจำกัดล่าง ( Lower Threshold ) คือถ้าน้อยกว่าค่านี้ แสดงว่ามีทรัพยากรมีเพียงพอ ก็ให้โปรเซสใหม่เข้ามาทำงานได้
สำหรับวิธีการหาความถี่ทำได้โดยเก็บเวลาสุดท้ายที่เกิด page fault ()เอาไว้ และเมื่อเกิด page fault ก็นำเวลาปัจจุบันลบด้วยเวลาที่ครั้งสุดท้ายที่เกิด page fault แล้วหาส่วนกลับ ก็จะได้ความถี่
แหล่งข้อมูลอื่น
[แก้]- Abraham Silberschatz, Peter Baer Galvin and Greg Gagne. "Operating System Principles".