Unix komutunun en güzel yanı nedir?


9

Hızlı bir kıyaslama testi için, nice ve ionice nasıl maksimum etkiyle birleştirilebilir, yani bir komutun mümkün olduğunca az kaynak kullanma (tamamen boşta) olmadan?

(Sanırım `` nice -n 19 ionice -c 2 [command] '' gibi bir şey ama iyonice'nin "-n" (classdata param) hakkında emin değilim, man sayfası onun alaka düzeyi hakkında şifreli.)


3
artı 1 akıllı soru başlığı için, ama aynı zamanda genel olarak iyi bir soru.
Lizardx

Yanıtlar:


10

İstediğiniz tam komut:

chrt -b 0 nice -n 19 ionice -c 2 -n 7 [command]

Başlangıçtaki chrtkomut, şeyleri toplu çizelgeleme sınıfına geçirir, bu da güzel değere 0,5 eklenir. İyonice için -n seçeneği, gerçek zamanlı ( -c 1) ve en iyi çaba ( -c 2) seçenekleri için basit bir önceliktir , daha düşük değerler aynı güzel değerler gibi daha yüksek önceliğe sahiptir (ancak 0-7 aralığında). Ancak, I / O zamanlama sınıfı ve önceliği varsayılan olarak CPU zamanlama parametrelerinden türetildiğinden ve nice -n 19ima ettiğinden, ionice komutu kesinlikle gerekli değildir ionice -c 2 -n 7.

Ancak, hem CPU hem de G / Ç zamanlama sınıflarını boşta olarak ayarlayarak mutlak minimum kaynak kullanımını elde edebilirsiniz. Her iki durumda da, 'boşta' zamanlayıcılar aslında boşta zamanlayıcılar değildir ve kaynakları kullanmaya devam edebilirsiniz, bu sadece her şeyin daha yüksek önceliğe sahip olacağıdır.

CPU zamanlama sınıfı için bu chrt, gerek olmadan da komutu kullanır nice(öncelik 0boşta zamanlama sınıfında ayarlanmalıdır ) ve şöyle görünür:

chrt -i 0 {command or PID}

niceLinux aynalar SVR4 versiyonu, bu zamanlama sınıfını, sadece güzel değerini değiştiremezsiniz (aynı zamanda klasik UNIX daha Linux üzerinde farklı davranıyorsa, ama bu biraz OT var) demek olduğunu üzerinde komut. Orijinal alternatif zamanlama sınıfları POSIX.1E gerçek zamanlı olduğundan SCHED_RRve SCHED_FIFOzamanlama sınıflarını ayarlama komutu çağrıldı chrt. Bu -iseçenek, SCHED_IDLEprogramlama sınıfını kullanmayı belirtir

I / O zamanlama sınıfı için şunu kullanın ionice. Tam komut şöyle görünür:

ionice -c 3 {command or PID}

-cSeçenek belirtir kullanım ne zamanlama sınıfı ve 3 boşta sınıf için sayıdır. Hangi blok I / O zamanlayıcısının kullanıldığına bağlı olarak, bunun aslında hiçbir şeyi etkilemeyebileceğini unutmayın. Özellikle, noopI / O zamanlayıcı hiç öncelikleri veya zamanlama sınıflarını desteklemiyor ve eminim deadlinezamanlayıcılar (hem eski hem de blk-mq bir) ya da değil.

Bunu kendi programınız için veya diğer işlemler için bir şeyler ayarlamak üzere programlı olarak yapmak istiyorsanız, sched_setschedulerve ioprio_setsistem çağrıları için man sayfalarına bakın (her ikisi de daha fazla arka plan istiyorsanız, her ikisi de okumaya değer).


0

Bu komutun başkalarının bitmesini tamamen beklemesini istemediğinizi varsayarsak, potansiyel olarak kaynak açlığına maruz kalmamak için satır şöyle olacaktır:

nice -n19 [command]

Gibi ionice Modern Linux çekirdeği üzerine orantılı olarak ayarlanır.

Bu arada chrt -b0güzellikle ilgisi yok, ancak CPU'nun bir süreçten diğerine ne sıklıkla atlayacağı. Bu satır, toplu programların önbellekleri daha iyi kullanması için bu süreyi uzatır, ancak diğer komutlar için işe yaramaz. Olarak görülüyor burada .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.