ฉันใช้การวัดประสิทธิภาพ เกณฑ์มาตรฐานนักวิ่งของฉันตรวจสอบบัฟเฟอร์ dmesg ระหว่างการทดลองค้นหาสิ่งที่อาจส่งผลกระทบต่อประสิทธิภาพ วันนี้มันโยนสิ่งนี้ขึ้น:
[2015-08-17 10:20:14 คำเตือน] ดูเหมือนว่า dmesg จะเปลี่ยนไป! ต่างดังนี้ --- 2015-08-17 09:55:00 +++ 2015-08-17 10:20:14 @@ -825,3 +825,4 @@ [3.802206] [drm] การเปิดใช้งานสถานะ RC6: เปิด RC6, ปิด RC6p, ปิด RC6pp [7.900533] r8169 0000: 06: 00.0 eth0: เชื่อมโยง [7.900541] IPv6: ADDRCONF (NETDEV_CHANGE): eth0: ลิงก์พร้อมใช้งาน + [236832.221937] การขัดจังหวะแบบสมบูรณ์ใช้เวลานานเกินไป (2504> 2500) ลดเคอร์เนลส่วนต่อขยาย _event_max_sample_rate เป็น 50000
หลังจากการค้นหาบางอย่างตอนนี้ฉันรู้ว่าสิ่งนี้เกี่ยวข้องกับระบบย่อยการทำโปรไฟล์ในเคอร์เนลลินุกซ์ที่เรียกว่า "perf" ฉันไม่คิดว่าเราต้องการสิ่งนี้ดังนั้นฉันจึงต้องการปิดการใช้งานโดยสิ้นเชิง
ค้นหาอีกครั้งฉันพบว่า sysctl perf_cpu_time_max_percent
สามารถช่วยได้ ที่นี่มีคนแนะนำให้ปิดการใช้งานโดยการตั้งค่าเป็น 0 อ่านเพิ่มเติมได้ที่นี่ :
perf_cpu_time_max_percent:
คำแนะนำเกี่ยวกับเคอร์เนลจำนวนเวลา CPU ที่ควรได้รับอนุญาตให้ใช้เพื่อจัดการเหตุการณ์การสุ่มตัวอย่างแบบสมบูรณ์ หากระบบย่อย perf ได้รับแจ้งว่าตัวอย่างมีค่าเกินขีด จำกัด นี้ระบบจะลดความถี่ในการสุ่มตัวอย่างเพื่อพยายามลดการใช้งาน CPU
การสุ่มตัวอย่างแบบสมบูรณ์เกิดขึ้นใน NMI หากตัวอย่างเหล่านี้ใช้เวลาดำเนินการนานเกินไปโดยไม่คาดคิด NMI สามารถซ้อนกันได้มากจนไม่มีอะไรได้รับอนุญาตให้ดำเนินการ
0: ปิดใช้งานกลไก อย่าตรวจสอบหรือแก้ไขอัตราการสุ่มตัวอย่างของ perf ไม่ว่าจะใช้เวลา CPU เท่าไหร่ก็ตาม
1-100: พยายามอัตราการส่งข้อมูลตัวอย่างของ throttle เป็นเปอร์เซ็นต์ของ CPU นี้ หมายเหตุ: เคอร์เนลคำนวณความยาว "ที่คาดหวัง" ของแต่ละตัวอย่างเหตุการณ์ 100 ตรงนี้หมายถึง 100% ของความยาวที่คาดหวัง แม้ว่าจะตั้งไว้ที่ 100 คุณอาจยังคงเห็นตัวอย่างการควบคุมปริมาณถ้าเกินความยาวนี้ ตั้งค่าเป็น 0 หากคุณไม่สนใจว่าจะใช้งาน CPU มากเพียงใด
เสียงนี้สำหรับฉันชอบ 0 หมายความว่าอัตราตัวอย่างการทำโปรไฟล์ไม่ได้ถูกตรวจสอบอีกต่อไป แต่ระบบย่อย freq ยังคงทำงานอยู่ (?)
ทุกคนสามารถอธิบายวิธีปิดการทำโปรไฟล์เคอร์เนลด้วย freq ได้อย่างสมบูรณ์หรือไม่
แก้ไข: มีคนแนะนำว่าฉันลองสร้างเคอร์เนลโดยไม่ทำให้สมบูรณ์ แต่ฉันไม่คิดว่ามันจะเป็นไปได้ ตัวเลือกดูเหมือนจะไม่สามารถสลับได้:
แก้ไข 2: หลังจากอ่านเพิ่มเติมฉันตัดสินใจฉันอาจตั้งค่าkernel.perf_event_max_sample_rate
เป็นศูนย์ คือไม่มีตัวอย่างต่อวินาที อย่างไรก็ตามคุณไม่สามารถทำเช่นนี้ได้ (ที่มา ):
ส่งมอบ 02f98e3e36da106338b7c732fed516420fb20e2a ผู้แต่ง: Knut Petersen วันที่: พุธ 25 กันยายน 14:29:37 2013 +0200 perf: บังคับให้ 1 เป็นขีด จำกัด ที่ต่ำกว่าสำหรับ perf_event_max_sample_rate
แก้ไข 3: FWIW perf_cpu_time_max_percent
ตั้งไว้ที่ 25 ซึ่งหมายความว่าเคอร์เนลใช้เวลามากกว่า 25% ของเวลาลงทะเบียนฮาร์ดแวร์ตัวอย่าง นี่เป็นสิ่งที่ยอมรับไม่ได้สำหรับเครื่องเปรียบเทียบ
ตอนนี้ฉันมั่นใจว่าการตั้งค่าperf_cpu_time_max_percent
เป็นศูนย์จะยิ่งทำให้สถานการณ์แย่ลงเท่านั้นเนื่องจากเคอร์เนลจะยังคงใช้งานต่อไปมากกว่า 25% ของเวลาที่อ่านการลงทะเบียนฮาร์ดแวร์ ข้อผิดพลาดเกิดขึ้นเพื่อปรับอัตราตัวอย่างดังนั้นพยายามตรวจสอบให้แน่ใจว่าเคอร์เนลตรงตามโควต้าการใช้ <25% ของเวลาได้อย่างสมบูรณ์ 25% ยังสูงเกินไป IMHO
หากฉันไม่สามารถปิดการใช้งาน perf จริง ๆ ได้การประนีประนอมที่ดีที่สุดน่าจะเป็นperf_event_max_sample_rate
1
EDIT4: เพื่อนแนะนำว่าฉันอาจตีความความหมายที่ผิดperf_cpu_time_max_percent
ดังนั้นข้อความข้างต้นอาจไม่ถูกต้อง ค่า 25 บ่งชี้ว่าเคอร์เนลใช้มากกว่า 25% ของความยาวโดยพลการบางส่วนที่สงวนไว้สำหรับการบริการอินเตอร์รัปต์ perf
EDIT5:
ตามที่ระบุไว้ในความคิดเห็น-*-
ตัวเลือกที่สมบูรณ์แบบแสดงให้เห็นว่าคุณลักษณะถูกบังคับใช้โดยคุณลักษณะที่เปิดใช้งานอื่น ถ้าฉันดูhelp
มันบอกว่าคุณสมบัติเหล่านี้คือ:
ฉันไม่คิดว่าฉันจะชนะได้ที่นี่ สูตรบูลีนselected by
บอกว่า
หากคุณกำหนดเป้าหมาย X86 หรือ ...
ฉันเพิ่งตรวจสอบว่าการกำหนดเป้าหมาย X86_64 เปิดใช้งานจริง ๆCONFIG_X86
แล้ว ดังนั้นดูเหมือนว่าเมื่อคุณกำหนดเป้าหมายเป็น X86 หรือ X86_64 คุณจะได้รับความสมบูรณ์แบบ
ดังนั้นฉันต้องการเปลี่ยนคำถามของฉันเป็น:
ฉันสามารถใช้การตั้งค่า perf ใดเพื่อลดเวลาที่เคอร์เนลใช้ในรูทีน perf
โปรดทราบว่าจุดมุ่งหมายโดยรวมคือการควบคุมแหล่งที่มาของการเปลี่ยนแปลงแบบสุ่มสำหรับการเปรียบเทียบ หากฉันไม่สามารถปิดใช้งาน perf ได้ฉันจะลดผลกระทบของการทดสอบได้อย่างไร
CONFIG_HAVE_PERF_EVENTS=y
CONFIG_PERF_EVENTS=y
ฉันไม่คิดว่าสิ่งนี้สมบูรณ์แบบสำหรับผู้พิการ
-*-
นี้หมายความว่าระบบย่อยบางระบบขึ้นอยู่กับโมดูล perf Help
แสดงให้เห็นว่าต้นไม้แห่งการอ้างอิงที่คุณจำเป็นต้องปิดการใช้งานในการเปลี่ยนแปลงตัวเลือกในการหรือ[*]
[M]