Thrash

จากวิกิพีเดีย สารานุกรมเสรี

Thrash ในความหมายเชิงวิทยาการคอมพิวเตอร์ หมายถึงปรากฏการณ์ที่คอมพิวเตอร์มีประสิทธิภาพการทำงานลดลง อันเนื่องมาจากการใช้เวลาในการสับเปลี่ยนกันใช้ทรัพยากรหลายครั้งมาก ปรากฏการณ์ที่มักจะพบบ่อยอาทิเช่น การสับเปลี่ยนหน้า (paging) ใน หน่วยความจำเสมือน ซึ่งใช้ หน่วยความจำจริง เต็มแล้ว ทำให้เกิด Page Fault หลายครั้งและต้องเสียเวลาในการสับเปลี่ยนหน้าในแต่ละครั้ง ส่งผลให้การทำงานของคอมพิวเตอร์ช้าลง

การ Thrash ในหน่วยความจำเสมือน[แก้]

ปรากฏการณ์ Thrash

การ Thrash ในหน่วยความจำเสมือน เกิดจากการที่โปรเซสหลายโปรเซสสับเปลี่ยนหน้า (page) ของตนเองเข้าทำงานใน หน่วยความจำกายภาพ จนกระทั่งหน่วยความจำกายภาพเต็ม และมีโปรเซสเข้าทำงานอีกจำนวนมาก ทำให้เมื่อโปรเซสเริ่ม ทำงาน ก็จะมีการสับเปลี่ยนหน้า (page) ของโปรเซสอื่นออกแล้วเอาหน้าของโปรเซสที่จะทำงานสับเปลี่ยนเข้ามาแทน การสับเปลี่ยนหน้านั้นเป็นการติดต่อกับฮาร์ดดิสก์ ซึ่งใช้เวลาในการเข้าถึงนานมาก พอโปรเซสนี้ทำงานเสร็จ ก่อนโปรเซสอื่น เข้ามาทำงานก็ต้องมีการสับเปลี่ยนหน้า (page) ของโปรเซสนั้นเข้ามาอีกและเอาหน้าของโปรเซสแรกออกไป ทำให้ ทุกๆโปรเซส ต้องเสียเวลาการทำงานในส่วนที่สับเปลี่ยนหน้านี้มาก อีกทั้งในช่วงที่สับเปลี่ยนหน้า CPU จะว่าง จึงนำโปรเซส ใหม่เข้ามาอีก ซึ่งยิ่งสร้างปัญหาเข้าไปอีก จึงให้ประสิทธิภาพการทำงานของคอมพิวเตอร์ลดลงอย่างมาก

วิธีการตรวจสอบ Thrash โดยใช้ Working-Set Model[แก้]

WorkingSet

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".