เคอร์เนลลินุกซ์ 1000 HZ จำเป็นหรือไม่หากฉันมีตัวจับเวลาที่ไม่มีค่าและมีความละเอียดสูง


13

ฉันพยายามปรับปรุงประสิทธิภาพบนเซิร์ฟเวอร์ของฉัน ฉันมีกระบวนการบางอย่างที่ต้องการตัวสั่นน้อย (ความแปรปรวนน้อยกว่า 10ms)

ฉันมีค่าเฉลี่ยการโหลดสูงสุด 4 ใน i7-920 (4 ฟิสิคัลคอร์, 8 กับ HT) มีประมาณ 10 กระบวนการตั้งแต่ 40% ถึง 90% ของโหมดผู้ใช้หลัก การใช้ระบบรวมเป็น 3% การใช้งาน CPU ทั้งหมดสูงสุด 80%

การตั้งค่าเคอร์เนลจาก 100hz เป็น 1000hz จะช่วยปรับปรุง jitter หรือไม่ถ้าตัวจับเวลาไม่มีค่าและความละเอียดสูงตั้งไว้แล้ว?

หน้านี้ดูเหมือนว่าจะยังคงทำอะไรบางอย่าง https://lkml.org/lkml/2009/4/28/401

วิธีการเกี่ยวกับการเปลี่ยนจากความสมัครใจ (PREEMPT_VOLUNTARY) เป็นแบบเสียได้ (PREEMPT)


รายละเอียด / เวอร์ชั่นการกระจาย OS
ewwhite

เคอร์เนล Linux 11.10 64 บิต Linux 3.3 kernel
บ๊อบ

คุณมีโหลดโหมดผู้ใช้มากมาย เวลาของระบบค่อนข้างเล็กน้อย ฉันไม่แนะนำให้เต้นรอบ ๆ เคอร์เนลที่ปรับได้ที่นั่น หรือการได้รับการกำหนดเวลาแบบเรียลไทม์เป็นสิ่งที่คุณหวังว่าจะบรรลุ
yrk

ดังนั้นคุณจะพูดว่าถ้าการใช้ระบบต่ำไม่มีสิ่งใดที่สร้างความแตกต่างในการตอบสนองได้?
บ๊อบ

คำตอบ:


4

ฉันพยายามปรับปรุงประสิทธิภาพบนเซิร์ฟเวอร์ของฉัน ฉันมีกระบวนการบางอย่างที่ต้องการตัวสั่นน้อย (ความแปรปรวนน้อยกว่า 10ms)

เวลาจริงจะไม่ปรับปรุงประสิทธิภาพมันจะทำให้ทั้งระบบทำงานได้ราบรื่นขึ้น แต่จริง ๆ แล้วช้าลงเล็กน้อย กล่าวอีกนัยหนึ่งคือปริมาณงานเทียบกับเวลาแฝง หากเป็นสิ่งที่คุณต้องการจริงๆแล้วมีหลายตัวเลือก:

  • ใช้ 300 Hz หรือ 1KHz, PREEMPT และไม่ใช้ tickless
  • การใช้งานnice, schedtoolการกำหนดลำดับความสำคัญที่เหมาะสม / การเรียนตามความต้องการของคุณ
  • ลองRTหรือBFS

มีอะไรผิดปกติกับการใช้เห็บ?
Bob

1
@Bob มันดีสำหรับการประหยัดพลังงาน แต่ในกรณีที่คุณสนใจเวลาแฝงเราแนะนำให้ปิดเช่นck.kolivas.org/patches/bfs/bfs-configuration-faq.txt
poige

3

หากตัวสั่นสะเทือนต่ำเป็นสิ่งสำคัญสำหรับคุณคุณอาจต้องการใช้ทั้ง 1000 เฮิร์ตและค่าตัวอย่าง

หากกระบวนการเหล่านั้นมีความไวต่อเวลาจริง ๆ แล้วคิดว่าคุณอาจต้องการแพตช์ / เคอร์เนลเรียลไทม์ที่มุ่งเน้นเพิ่มเติมหรืออย่างน้อยพารามิเตอร์การตั้งเวลาระดับกระบวนการบางอย่างเช่น rtprio

การใช้งานทั่วไปคือเซิร์ฟเวอร์เสียงโปรดดูคำแนะนำตัวอย่างจากjackaudio


3

1) อย่าใช้เห็บเหรอมันยังคงมีการทดลองสูงและไม่แนะนำให้ใครนอกจากนักพัฒนาที่ทำงานเกี่ยวกับมันมันก็มีไว้เพื่อช่วยให้ประหยัดพลังงาน

2) ระบบ preemtible เต็มรูปแบบควรจะเพิ่มการตอบสนองของ desktor ในขณะที่สมัครใจ preemptible สำหรับการใช้งานทั่วไป (ผสมของการตอบสนองและ troughput) หากเซิร์ฟเวอร์ของคุณมี SMP (หลายคอร์) คุณอาจไม่ต้องเสียสิทธิ์เนื่องจากการทำงานส่วนใหญ่จะถูกดำเนินการบนคอร์และไม่มีการขัดจังหวะซึ่งโดยทั่วไป 1) ใช้เวลา 2) แคชของถังขยะ

3) 1,000Hz เป็นค่าเดสก์ท็อปที่แนะนำค่าใช้จ่าย แต่อนุญาตให้ตัวอย่างเช่นเล่นเกมและสิ่งของ 300 hz คือค่าที่แนะนำสำหรับวิดีโอ (เพื่อให้สามารถกำหนดเวลาใหม่ได้และคุณจะไม่พลาดเฟรม) ในขณะที่ 100Hz ให้ troughput ที่ดีที่สุด

หากคุณต้องการที่จะมีเสถียรภาพตามที่ได้รับ (โดยไม่ต้องใช้แพตช์ RT) คุณควรดำเนินการ: เห็บเป็นระยะ (ความมั่นคง) ที่ไม่สามารถจองล่วงหน้าได้ (ความเสถียร) - ความถี่จับเวลา (สูงถึงคุณ 1,000 สำหรับการตอบสนองที่ดีที่สุด troughput ที่ดีที่สุด แต่ความละเอียด 10ms ในตัวจับเวลาเช่นสิ่งต่างๆจะทำงานอย่างน้อย 10ms)

หวังว่านี่จะช่วยได้บ้าง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.