เหตุใดจึงต้องเลือกใช้เคอร์เนลเวลาแฝงต่ำในโหมดทั่วไปหรือแบบเรียลไทม์


105

หลังจากติดตั้ง Ubuntu Studio 12.04 ฉันพบว่าใช้เคอร์เนล latency ต่ำ ฉันค้นหาสาเหตุและวิธีการเปลี่ยนกลับเป็นเรียลไทม์หรือทั่วไป แต่ดูเหมือนว่าส่วนนี้ของ Linux จะไม่ครอบคลุมมาก

ถาม:เหตุใดจึงต้องเลือกเคอร์เนลเวลาแฝงต่ำกับเคอร์เนลทั่วไปหรือเรียลไทม์

PS: ฉันได้อ่านแล้วคำตอบจากนี้คำถามนี้โพสต์


3
+1 เพราะต้องเป็นคำถามที่ดีถ้าทุกคนนิ่งงัน ฉันยังไม่ทราบความแตกต่างระหว่างความหนืดต่ำแบบทั่วไปและแบบเรียลไทม์ ถ้า-realtimeเป็นเรียลไทม์แล้วอะไรจะเกิด-rtขึ้น? แล้วเกิดอะไรขึ้นกับ-preemptเคอร์เนล? ฉันจะขอบคุณ gemue2010 เขาทำได้ดีมากอธิบาย แต่มันก็ยังไม่อธิบายทุกอย่าง
Hitechcomputergeek

คำตอบ:


61

คำแนะนำง่ายๆเหล่านี้มีไว้เพื่อช่วยให้คุณเข้าใจว่าเคอร์เนลใดและในลำดับใดคุณควรทดสอบเพื่อให้เหมาะกับกรณีการใช้งานของคุณ

  • หากคุณไม่ต้องการเวลาแฝงต่ำสำหรับระบบของคุณโปรดใช้ -generic kernel
  • หากคุณต้องการระบบ latency ต่ำ (เช่นสำหรับการบันทึกเสียง) โปรดใช้ -preempt kernel เป็นตัวเลือกแรก สิ่งนี้ช่วยลดเวลาในการตอบสนอง แต่ไม่ลดทอนคุณสมบัติการประหยัดพลังงาน มันสามารถใช้ได้เฉพาะกับระบบ 64 บิต (หรือที่เรียกว่า amd64)
  • หากเคอร์เนล -preempt ไม่ได้ให้เวลาแฝงที่ต่ำเพียงพอสำหรับความต้องการของคุณ (หรือคุณมีระบบ 32 บิต) ดังนั้นคุณควรลองใช้ -lowlatency kernel
  • หากเคอร์เนล -lowlatency ไม่เพียงพอคุณควรลองใช้ -rt kernel
  • หากเคอร์เนล -rt ไม่เสถียรพอสำหรับคุณคุณควรลองใช้ -realtime kernel

แหล่งความช่วยเหลือของ Ubuntu

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

สำหรับโพสต์บล็อกที่เข้าใจง่ายกว่านี้ให้อ่านลิงค์นี้


1
ฉันอ่านบทความก่อนหน้านี้ที่คุณโพสต์แล้ว เกี่ยวกับข้อสองข้อเท็จจริงเหล่านั้นมีความน่าเชื่อถือมากแค่ไหน?
Starx

การทดสอบดังกล่าวมีการพูดคุยด้วยตัวเอง หากทีมอูบุนตูเลือก Latency ตั้งแต่แรกมันจะต้องเป็นเหตุผล ดังนั้นคุณต้องการทราบความแตกต่างตอนนี้คุณทำ แก้ไขปัญหา ?
อูบุนตูแฟน

5
ไม่ .. ฉันไม่คิดว่าปัญหาจะได้รับการแก้ไข หากคำตอบของคุณทำอะไรก็เพิ่มความอยากรู้ของฉันมากขึ้น
Starx

9
สิ่งนี้ยังคงเป็นจริงในปี 2558 หรือไม่? The -preempt, -rtและ-realtimeเมล็ดไม่มีอีกต่อไป
naught101

51

ฉันเป็นผู้เขียนบล็อกโพสต์ที่เชื่อมโยงกับแฟน ๆ ของ ubuntu: http://sevencapitalsins.wordpress.com/2007/08/10/low-latency-kernel-wtf/

บล็อกโพสต์ที่ไม่ได้นำเสนอความเป็นจริงใด ๆ ก็เป็นเพียงทฤษฎี เป็นวิธีที่ใช้งานได้จริง: โปรเซสเซอร์ "หยุด" บ่อยขึ้นเพื่อดูว่ามีบางกระบวนการที่ต้องให้ความสนใจทันที นั่นหมายความว่ากระบวนการเหล่านั้นจะถูกดำเนินการก่อนกระบวนการอื่นดังนั้นคุณจะไม่ข้ามเฟรมขณะเข้ารหัสหรือมีเวลาหน่วงอย่างมากระหว่างการคลิกเมาส์และการเสียชีวิตของศัตรู ไม่ได้หมายความว่ากระบวนการทั้งหมดจะสิ้นสุดเร็วกว่า: จริง ๆ แล้ว CPU กำลังสูญเสียส่วนใหญ่ในการตัดสินใจว่ากระบวนการใดที่จะถูกประมวลผลถัดไปและทำการสลับบริบท ดังนั้นเวลาในการดำเนินการทั้งหมดจึงนานกว่าและนั่นคือสาเหตุที่ไม่มีใครสามารถใช้งานเคอร์เนลที่สามารถจองได้บนเว็บเซิร์ฟเวอร์หรือเครื่องฐานข้อมูล แต่เคอร์เนล 300Hz (หรือแม้แต่ 1,000 เฮิร์ตซ์) ที่สามารถครอบครองได้นั้นดีที่สุดสำหรับเซิร์ฟเวอร์เกม

แต่ทุกวันนี้โปรเซสเซอร์มีคอร์มากมายดังนั้นเมื่อมีกระบวนการไม่กี่กระบวนการที่ต้องให้ความสนใจพวกเขาสามารถจัดสรรได้อย่างง่ายดายบนแกนที่แตกต่างกันแทนที่จะรอแกนที่จะเอามัน

(stackexchange กำหนดให้ฉันอ้างอิง / ประสบการณ์ส่วนตัว: ฉันเป็นวิศวกรอิเล็กทรอนิกส์, noobgamer กระหายเลือดที่ต้องดูแลเซิร์ฟเวอร์เกมหลายตัวที่http://www.gamezoo.it )

ดังนั้นตามกฎทั่วไปแล้วฉันจะพูดว่า: หากโปรเซสเซอร์ของคุณเป็นควอดคอร์ความถี่สูงที่ทรงพลังจำนวนมากและคุณไม่ได้เปิดเว็บเพจเป็นจำนวนมากในขณะที่เข้ารหัส / ถอดรหัส / เล่นเกม (huh) คุณสามารถทำได้ เพียงแค่ลองใช้เคอร์เนลทั่วไป (หรือ i686 หรือ amd64 ถ้ามี) เคอร์เนลและมีปริมาณงานที่เป็นไปได้สูงสุด (เช่นจำนวนดิบที่ทำให้หน่วยประมวลผลสามารถทำงานได้) หากคุณประสบปัญหา (ควรเป็นเรื่องเล็กน้อยจริง ๆ ) หรือเครื่องของคุณมีพลังน้อยกว่าด้านบนของตลาดเล็กน้อยให้ไปที่ -preempt

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

ในที่สุดตัวเลือกเคอร์เนลที่เกี่ยวข้องมากที่สุดหากคุณต้องการคอมไพล์เคอร์เนลของคุณเองเพื่อให้มีเดสก์ท็อปเวลาแฝงต่ำคือ:

PREEMPT=y

และ:

CONFIG_1000_HZ=y

หากต้องการเพิ่มพลังบางอย่างคุณสามารถเลือกตัวเลือกนี้:

CONFIG_NO_HZ=y

ฉันสังเกตเห็นว่าคุณพูดถึงการบำรุงรักษาเซิร์ฟเวอร์ฉันกำลังพยายามหาเคอร์เนลที่ดีที่สุดสำหรับเซิร์ฟเวอร์เฉพาะแหล่งวาล์ว (CSGO โดยเฉพาะ) เธรด CS ส่วนใหญ่ที่ฉันค้นหาเกี่ยวข้องกับ goldsrc ซึ่งต้องการเคอร์เนล 1000Hz ด้วย srcds ความไม่เก่งทางเพศต่ำหรือไม่? ถ้าไม่เป็นไรฉันก็จะยึดติดกับ lowlatency นั่นคือสิ่งที่ฉันมีตอนนี้ (ฉันแยก cpu cores สำหรับ 128 tick srcds เซิร์ฟเวอร์เพราะมันไม่ได้ประโยชน์จากการทำเธรดหลายตัวจริงๆ)
Vincent De Smet

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

4

จากเอกสารที่อ้างถึงข้างต้น ( http://www.versalogic.com/mediacenter/whitepapers/wp_linux_rt.asp )

  1. ระบบเรียลไทม์แบบซอฟต์จะลดเวลาแฝงเฉลี่ย แต่ไม่ใช่เวลาตอบสนองสูงสุดที่รับประกัน
  2. ระบบเรียลไทม์ที่ยากลำบากตรงตามกำหนดเวลาที่ต้องการตลอดเวลา (100 เปอร์เซ็นต์) แม้ภายใต้ภาระของระบบที่เลวร้ายที่สุด
  3. อ้างอิงจากส Yaghmour [4], "เรียลไทม์ - เกี่ยวข้องกับการค้ำประกันไม่ใช่ด้วยความรวดเร็ว"

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


เป็นเรื่องจริง แต่เราจำเป็นต้องรู้ว่าเคอร์เนลชนิดใดที่ตรงกับระบบแบบเรียลไทม์“ ความแข็ง”
Melebius

0

ฉันมีแล็ปท็อปเครื่องเก่าที่มี dual AMD A6-4400M ที่ 1600MHz ซึ่งฉันใช้อย่างไม่ จำกัด เมื่อฉันไม่อยู่ที่สำนักงานส่วนใหญ่จะอ่านอีเมลและเรียกดูเว็บไซต์ทั่วไป มีบางอย่างอาจเชื่อมต่อกับการอัปเดตซอฟต์แวร์ซึ่งทำให้ไม่ตอบสนอง บางอย่างเช่นการพิมพ์ตัวละครโหลโดยไม่เห็นตัวแรก วิดเจ็ตมักถามว่าฉันควรบังคับให้ออกจากกระบวนการหรือไม่

หลังจากsudo apt-get install linux-lowlatencyรีบูตเครื่องมันก็ราบรื่นและตอบสนองได้ดี (uname -r 5.0.0-20-lowlatency.) ยอดเยี่ยมฉันควรเปลี่ยนไปหลายปีแล้ว ให้ฉันเน้นคำตอบของเซเว่น: ถ้าคุณไม่ต้องการบีบเซิร์ฟเวอร์ออกมาให้ได้จำนวนสูงสุดให้ไปที่ -preempt !

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