Diperlukan kernel Linux 1000 HZ jika saya memiliki timer yang tidak berdasar dan beresolusi tinggi?

13

Saya mencoba meningkatkan kinerja di server saya. Saya punya beberapa proses yang perlu jitter rendah (varian kurang dari 10ms).

Saya memiliki rata-rata beban maksimum 4 pada i7-920 (4 core fisik, 8 dengan HT). Ada sekitar 10 proses mulai dari 40% hingga 90% dari mode pengguna inti. Penggunaan sistem adalah total 3%. Total penggunaan CPU adalah 80% maks.

Apakah pengaturan kernel dari 100hz ke 1000hz akan meningkatkan jitter jika timer yang tidak berdetik dan resolusi tinggi sudah disetel?

Halaman ini tampaknya mengindikasikan masih melakukan sesuatu. https://lkml.org/lkml/2009/4/28/401

Bagaimana dengan mengubah dari sukarela (PREEMPT_VOLUNTARY) menjadi preemptible (PREEMPT)?

Bob
sumber
Rincian / versi distribusi OS?
ewwhite
Ubuntu 11.10 64bit server Linux 3.3 kernel.
Bob
Anda memiliki banyak mode pengguna dimuat; waktu sistem relatif dapat diabaikan. Saya tidak akan menyarankan untuk menari di sekitar kernel kernel di sana. Atau mendapatkan penjadwalan seperti waktu nyata adalah apa yang ingin Anda capai?
yrk
Jadi, apakah Anda mengatakan jika penggunaan sistem rendah, tidak ada yang membuat perbedaan pada respon?
Bob

Jawaban:

4

Saya mencoba meningkatkan kinerja di server saya. Saya punya beberapa proses yang perlu jitter rendah (varian kurang dari 10ms).

Setiap waktu nyata tidak akan meningkatkan kinerja, itu akan membuat seluruh sistem berjalan lebih lancar tetapi sedikit lebih lambat, pada kenyataannya. Dengan kata lain, ini throughput vs. latency. Jika benar-benar yang Anda butuhkan, maka beberapa opsi:

  • Gunakan 300 Hz atau bahkan 1KHz, PREEMPT, dan jangan gunakan tickless
  • Gunakan nice, schedtooluntuk menetapkan prioritas / kelas yang tepat sesuai dengan kebutuhan Anda
  • Cobalah RT atau BFS
poige
sumber
Apa yang salah dengan menggunakan tickless?
Bob
1
@ Bob, Ini bagus untuk menghemat daya, tetapi jika Anda peduli tentang latensi, disarankan untuk tidak aktif, misalnya ck.kolivas.org/patches/bfs/bfs-configuration-faq.txt
poige
3

Jika low jitter penting bagi Anda, ya, Anda mungkin ingin menggunakan 1000Hz dan PREEMPT.

Jika proses-proses itu benar-benar sensitif terhadap waktu, Anda mungkin perlu tambalan / kernel berorientasi waktu nyata, atau setidaknya beberapa parameter penjadwalan tingkat proses, seperti rtprio.

Penggunaan khas adalah server audio, lihat misalnya saran dari Jackaudio

koollman
sumber
3

1) Jangan gunakan tanpa tanda centang, ini masih sangat eksperimental dan tidak direkomendasikan kepada siapa pun selain pengembang yang mengerjakannya, ini juga dimaksudkan untuk membantu menghemat daya.

2) Sistem preemtible sepenuhnya diharapkan dapat meningkatkan daya tanggap desktor, sedangkan preemptible sukarela adalah untuk penggunaan umum (campuran responsif dan throughput). Jika server Anda memiliki SMP (beberapa core), Anda mungkin harus menggunakan non-preemptible, karena sebagian besar pekerjaan akan dieksekusi pada core mereka dan tanpa interupsi, yang umumnya 1) membutuhkan waktu 2) cache sampah

3) 1000Hz adalah nilai desktop yang memperkenalkan overhead, tetapi memungkinkan untuk misalnya bermain game dan lainnya. 300 hz adalah nilai yang direkomendasikan untuk video (sehingga hal-hal dapat dijadwal ulang dan Anda masih tidak akan melewatkan frame), sementara 100Hz memberikan throughput terbaik (meskipun tidak diarahkan untuk hal-hal jaringan lowlatency).

Jika Anda ingin menjadi stabil karena mendapat (tanpa menggunakan patch RT), Anda harus pergi: kutu berkala (stabilitas) frekuensi-timer (stabilitas) non-preemptible (stabilitas) frekuensi (hingga Anda, 1000 untuk responsif terbaik dan latiency rendah, 100 untuk throughput terbaik tetapi resolusi 10 ms pada timer, mis. barang akan berjalan setidaknya 10 ms)

Semoga ini bisa membantu.

pruzinat
sumber