มีใครสักคนที่จะพาฉันไปที่คำสั่งเพื่อวัดการพลาด TLB ใน LINUX ได้ไหม? การพิจารณาความผิดพลาดเล็กน้อย (หรือโดยประมาณ) เป็นเรื่องผิดพลาดเนื่องจาก TLB พลาดหรือไม่
มีใครสักคนที่จะพาฉันไปที่คำสั่งเพื่อวัดการพลาด TLB ใน LINUX ได้ไหม? การพิจารณาความผิดพลาดเล็กน้อย (หรือโดยประมาณ) เป็นเรื่องผิดพลาดเนื่องจาก TLB พลาดหรือไม่
คำตอบ:
คุณสามารถใช้perfเพื่อเข้าถึงเคาน์เตอร์วัดประสิทธิภาพของฮาร์ดแวร์:
$ perf stat -e dTLB-load-misses,iTLB-load-misses /path/to/command
เช่น :
$ perf stat -e dTLB-load-misses,iTLB-load-misses /bin/ls > /dev/null
Performance counter stats for '/bin/ls':
5,775 dTLB-load-misses
1,059 iTLB-load-misses
0.001897682 seconds time elapsed
ความผิดเล็กน้อยและการพลาด TLB นั้นไม่ดี ข้อผิดพลาดเล็กน้อยเกิดขึ้นเมื่อหน้าที่ร้องขออยู่ในหน่วยความจำ แต่ไม่ได้แมปในตารางหน้าปัจจุบัน เป็นกรณีที่ความผิดพลาดเล็กน้อยจะเกี่ยวข้องกับการพลาด TLB (เนื่องจากรายการ TLB เป็นทางลัดไปยังรายการตารางหน้า) แต่การพลาด TLB จะเกิดจากสิ่งอื่น ๆ อีกมากมายเช่นความผิดพลาดอย่างหนักหรือการเปลี่ยนแปลงในท้องถิ่นของโปรแกรม .
ความผิดพลาดของหน้าเล็ก ๆ น้อย ๆ เกิดขึ้นเมื่อหน้านั้นถูกโหลดในหน่วยความจำแล้ว แต่ยังไม่ได้สร้างรายการตารางหน้าที่เกี่ยวข้อง ในฐานะที่เป็นผลข้างเคียงข้อผิดพลาดของหน้าเล็ก ๆ น้อย ๆ มักจะมี TLB คิดถึงอยู่เสมอ ในทางกลับกันการพลาด TLB เกิดขึ้นเมื่อรายการการแปลสำหรับเพจไม่ได้อยู่ใน TLB (ซึ่งเป็นแคช) ซึ่งอาจเกิดขึ้นเมื่อรายการ TLB นั้นถูกขับไล่เนื่องจากความจุที่ จำกัด ของ TLB