Linux sürecini sadece belirli bir makinede belirli bir çekirdekte çalışacak şekilde sınırlamak mümkün müdür?


10

Diyelim ki dört çekirdekli bir kutum ve her birinde on iplik bulunan dört özdeş süreç var. Linux'ta, İşlem A'nın yalnızca CPU 0'da çalışmasına izin verildiğini, İşlem B'nin yalnızca CPU 1'de çalışmasına izin verildiğini söylemek mümkün müdür?

Yanıtlar:


16
taskset <affinity mask> -p <process>

yani

taskset 1 -p 12345

12345 sürecini yalnızca işlemci / çekirdek kullanacak şekilde ayarlamak için 1

Bitmask bir liste (yani 4+ çekirdek sistemin çekirdek 3 ve 4'ü kullanmak için 1,3,4) veya onaltılı bir bit maskesi (sadece çekirdek 1 için 0x0000000D 1,3,4, 0x00000001) olabilir

tasksetgenellikle adlı pakette bulunur shedutils.

Düzenleme: neredeyse unuttum ... Mevcut bir işlem için değiştirmek yerine yeni bir komutun benzeşimini ayarlamak istiyorsanız, şunu kullanın:

taskset <mask> <program> [<arg1>]...[<argN>]

1

görevleri kümesi (util-linux 2.13-pre7) kullanımı: görevleri kümesi [seçenekler] [maske | cpu-list] [pid | cmd [args ...]] bir sürecin benzeşimini ayarlayın veya alın

-p, --pid varolan verilen pid üzerinde çalışır -c, --cpu-list görüntüleme ve cpus'u liste biçiminde belirtme -h, --help bu yardımı görüntüleme -v, --version sürüm bilgileri

Varsayılan davranış yeni bir komut çalıştırmaktır: tasket 03 sshd -b 1024 Varolan bir görevin maskesini alabilirsiniz: tasket -p 700 Veya ayarlayın: tasket -p 03 700 Liste biçimi, yerine virgülle ayrılmış bir liste kullanır mask: taskseti -pc 0,3,7-11 700 Liste biçimindeki aralıklar adım argümanı alabilir: örn. 0-31: 2, 0x55555555 maskesine eşdeğerdir

İhtiyacınız olan her zaman sunucunuzu optimize edebilirsiniz

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.