Mengapa memilih kernel latensi rendah daripada yang generik atau realtime?

105

Setelah menginstal Ubuntu Studio 12.04, saya menemukan bahwa ia menggunakan kernel latensi rendah. Saya mencari mengapa dan bagaimana mengubah kembali ke yang realtime atau generik. Tetapi sepertinya bagian dari Linux ini belum pernah dibahas.

T: Mengapa memilih kernel latensi rendah daripada yang generik atau realtime?

PS: Saya sudah membaca jawaban dari ini pertanyaan dan ini posting.

Starx
sumber
3
1 karena pasti pertanyaan yang cukup bagus jika semua orang bingung. SAYA MASIH tidak tahu perbedaan antara kernel dengan latensi rendah, generik, dan realtime. Jika -realtimerealtime, lalu apa artinya -rt? Dan ada apa dengan -preemptkernel? Saya akan berterima kasih pada gemue2010, dia melakukan pekerjaan yang cukup bagus untuk menjelaskannya, tetapi masih tidak menjelaskan semuanya.
Hitechcomputergeek

Jawaban:

61

Ini adalah beberapa panduan sederhana yang disediakan untuk membantu Anda memahami kernel mana, dan dalam urutan mana, Anda harus mengujinya agar sesuai dengan use case Anda.

  • Jika Anda tidak membutuhkan latensi rendah untuk sistem Anda, silakan gunakan kernel -generic.
  • Jika Anda memerlukan sistem latensi rendah (misalnya untuk merekam audio) maka silakan gunakan kernel -preempt sebagai pilihan pertama. Ini mengurangi latensi tetapi tidak mengorbankan fitur hemat daya. Ini tersedia hanya untuk sistem 64 bit (juga disebut amd64).
  • Jika kernel -preempt tidak menyediakan latensi rendah yang cukup untuk kebutuhan Anda (atau Anda memiliki sistem 32 bit) maka Anda harus mencoba kernel -lowlatency.
  • Jika kernel -lowlatency tidak cukup maka Anda harus mencoba kernel -rt
  • Jika kernel -rt tidak cukup stabil untuk Anda, maka Anda harus mencoba kernel -realtime

Sumber Bantuan Ubuntu

Jadi itu tergantung pada apa yang akan Anda lakukan dengan distro studio Anda. Untuk sebagian besar pengguna yang membutuhkan waktu respons cepat pengguna akhir, generik akan baik-baik saja, bagi yang lain yang perlu mengedit video profesional di mana bahkan penurunan frame sederhana tidak dapat diterima, kernel real-time diperlukan.

Untuk posting blog yang lebih mudah dipahami, baca tautan ini

penggemar ubuntu
sumber
1
Saya sudah membaca artikel sebelumnya yang Anda posting. Tentang yang kedua, seberapa banyak fakta-fakta itu dapat diandalkan?
Starx
Nah tes yang disebutkan di sana berbicara sendiri. Jika tim Ubuntu telah memilih Latency sejak awal, itu harus menjadi alasan untuk itu. JADI, kamu ingin tahu perbedaannya, sekarang kamu tahu. Masalah terpecahkan?
ubuntu fan
5
Tidak .. Saya rasa masalahnya tidak terpecahkan. Jika jawaban Anda melakukan apa pun, itu menambah rasa ingin tahu saya.
Starx
9
Apakah semua ini masih berlaku pada tahun 2015? The -preempt,, -rtdan -realtimekernel tidak ada lagi
neless101
51

Saya penulis posting blog yang ditautkan oleh penggemar ubuntu: http://sevencapitalsins.wordpress.com/2007/08/10/low-latency-kernel-wtf/

Posting blog itu tidak menunjukkan fakta, itu hanya teori . Begitulah cara kerjanya, sebenarnya: prosesor "berhenti" lebih sering untuk melihat apakah ada beberapa proses yang membutuhkan perhatian segera. Itu berarti bahwa proses-proses itu akan dieksekusi sebelum yang lain, sehingga Anda tidak akan melewatkan frame saat encoding, atau memiliki waktu tunda yang sangat besar antara klik mouse dan kematian musuh. Itu tidak berarti bahwa semua proses akan berakhir lebih cepat: sebenarnya CPU kehilangan sebagian besar waktunya memutuskan proses apa yang akan dieksekusi selanjutnya, dan melakukan konteks switch. Jadi total waktu eksekusi lebih lama, dan itu sebabnya tidak ada yang menjalankan preemptible kernel pada server web atau mesin database. Tetapi kernel 300Hz preemptible (atau bahkan 1000Hz) adalah yang terbaik untuk server game.

Tetapi saat ini prosesor memiliki banyak inti, sehingga ketika ada beberapa proses yang membutuhkan perhatian mereka dapat dengan mudah dialokasikan pada inti yang berbeda daripada menunggu inti untuk mengambilnya.

(stackexchange membutuhkan saya referensi / pengalaman pribadi: Saya seorang insinyur elektronik, noobgamer haus darah yang memelihara beberapa server game di http://www.gamezoo.it ).

Jadi, sebagai aturan praktis, saya akan mengatakan: jika prosesor Anda adalah quad-core frekuensi tinggi berderak angka-tinggi DAN Anda biasanya tidak membuka banyak halaman web saat encoding / decoding / gaming (ya), Anda bisa coba saja kernel generik (atau i686, atau amd64 jika ada) dan memiliki throughput setinggi mungkin (yaitu, angka mentah yang dapat dilakukan oleh prosesor). Jika Anda mengalami masalah (mereka harus benar-benar kecil) atau mesin Anda sedikit kurang kuat daripada bagian atas pasar, pilih -preempt.

Jika Anda menggunakan mesin kelas bawah yang hanya memiliki satu atau dua inti, cobalah -lowlatency. Anda juga dapat mencoba -realtime, tetapi Anda akan menemukan bahwa ia cenderung memblokir proses sampai yang "real-time" menyelesaikan pekerjaan mereka. Saya percaya kernel realtime bukan "vanilla", tetapi menerapkan patch CONFIG_PREEMPT_RT. Saya pikir kernel realtime hanya untuk mereka yang harus membangun satu aplikasi pada sistem embedded, jadi pengguna desktop biasa seharusnya tidak memiliki manfaat nyata karena mereka biasanya menjalankan sejumlah aplikasi pada saat yang bersamaan.

Terakhir, opsi kernel yang paling relevan jika Anda ingin mengkompilasi ulang kernel Anda sendiri untuk memiliki desktop dengan latensi rendah adalah:

PREEMPT=y

dan:

CONFIG_1000_HZ=y

Untuk menambahkan beberapa penghematan daya Anda dapat memeriksa yang ini:

CONFIG_NO_HZ=y
tujuh
sumber
Saya perhatikan Anda menyebutkan memelihara server, saya mencoba mencari kernel terbaik untuk server khusus sumber katup (khusus CSGO). kebanyakan CS threads saya temukan berkaitan dengan goldsrc yang membutuhkan 1000Hz kernel. Dengan srcds, apakah lowlatency buruk? jika tidak masalah saya hanya akan tetap pada lowlatency karena itulah yang saya miliki saat ini (saya mengisolasi cpu core untuk 128 tick srcds server karena tidak benar-benar mendapat manfaat dari multi threading pula).
Vincent De Smet
Berguna untuk mengetahui tip-tip ini, saya benar-benar akan berubah menjadi preempt. Saya tidak terburu-buru, saya ingin kernel saya bertindak seperti bajak laut kotor.
userDepth
4

Dari dokumen yang dikutip di atas ( http://www.versalogic.com/mediacenter/whitepapers/wp_linux_rt.asp )

  1. sistem waktu nyata yang lunak akan mengurangi latensi rata-rata tetapi bukan waktu respons maksimum yang dijamin.
  2. Sistem waktu-nyata yang keras memenuhi tenggat waktu yang diinginkan setiap saat (100 persen), bahkan di bawah beban sistem kasus terburuk.
  3. Menurut Yaghmour [4], "Kesepakatan real-time dengan jaminan, bukan dengan kecepatan mentah."

Artikel tersebut mengatakan untuk hard realtime kernel responsif atau terikat waktu adalah properti yang paling penting sehingga kadang-kadang mereka menunda aktivitas non-kritis yang menyebabkan keterlambatan tetapi untuk lowlatency atau kernel real time lunak lainnya mencoba untuk mengurangi latensi umum yang membantu dalam sebagian besar kasus. Karena latensi berkurang, sistem tampaknya menjadi cepat. Baca artikel dengan seksama.

Mayank Suman
sumber
Itu benar tetapi kita perlu tahu varian kernel mana yang cocok dengan "kekerasan" sistem waktu-nyata mana.
Melebius
0

Saya memiliki laptop lama ini dengan dual AMD A6-4400M pada 1600MHz, yang saya gunakan hemat ketika saya di luar kantor, terutama untuk membaca email dan menelusuri situs web biasa. Ada sesuatu, mungkin terhubung dengan pembaruan perangkat lunak, yang membuatnya tidak responsif. Sesuatu seperti mengetikkan selusin karakter tanpa melihat yang pertama. Seringkali widget menanyakan apakah saya harus menghentikan proses secara paksa.

Setelah sudo apt-get install linux-lowlatencydan reboot, itu menjadi halus dan responsif. (uname -r 5.0.0-20-lowlatency.) Hebat, saya harusnya beralih tahun yang lalu. Biarkan saya menekankan jawaban Tujuh: kecuali jika Anda ingin memeras max dari server angka, pergi untuk -preempt !

Ale
sumber