Belirli bir işlem için kaynak kullanımını nasıl sınırlayabilirim?


11

Çalışması gereken bir uygulama için bir işlemim var, ancak yaptığı şey için çok fazla IO kullanımı kullanıyor. Ve gerçekten bilgisayarımı çöküyor, çalışırken başka bir şey yapmayı imkansız hale getiriyor.

Yani belirli bir işlem için IO kullanımını, RAM'i ve CPU'yu sınırlamanın bir yolu olup olmadığını merak ediyordum. Ve elbette alt süreçleri.

Bu benim Ubuntu 18.04 LTS sistemimde.


2
@GreatUncleBulgaria Eğer itibar puanları ile ayrılmak istemiyorsanız gerçekten değil. Sorduğunuz şeyin basit cevabı, başkalarının önerdiği - ionice, renice- ve belki de ulimit -skomutları birleştirmek ve bu kadar.
Sergiy Kolodyazhnyy

@GreatUncleBulgaria Bu konuda cgroups-iohiçbir fikrim yok :)
Sergiy Kolodyazhnyy

Potansiyel olarak ilgili soru: askubuntu.com/q/538992/295286 Buradaki cevaplar gruplardan bahsediyor, ama başka bir şey değil. . . olabilir ?
Sergiy Kolodyazhnyy

1
@SergiyKolodyazhnyy: Birisi yorumları temizledi gibi görünüyor!

Yanıtlar:


8

Hepiniz bir arada kullanmalıdır cgexec, cpulimitve ionice:

  1. RAM ve SWAP'ı sınırla:

    sudo cgcreate -g memory:/szMyGroup
    echo $(( 512 * 1024 * 1024 )) | sudo tee /sys/fs/cgroup/memory/szMyGroup/memory.limit_in_bytes
    echo $(( 1024 * 1024 * 1024 ))  | sudo tee /sys/fs/cgroup/memory/szMyGroup/memory.memsw.limit_in_bytes
    

    Yukarıdaki komutlar szMyGroup(örn. Sizin durumunuzda group-great-uncle) adlı bir kontrol grubu szMyGroupoluşturur, 512 MB'a kadar fiziksel bellek ve 1024 MB'a kadar takas altında çalıştırılan işlemlere bir sınır koyar ve ardından:

    sudo cgexec -g memory:szMyGroup szMyProgram

    programınızı szMyGroupkontrol grubu altında çalıştıracak ve böylece sınırlara uymalarını sağlayacak

  2. disk GÇ sınırlayın:

    sudo ionice --class 3 --pid $(pgrep -f szMyProgram)

    Bu komut kullanımları pgrepile mevcut komut satırı yeniden parçaları yalnızca disk kullanımı da disk erişimini sınırlamak için başka bir program kullanılarak bir

  3. CPU'yu sınırlayın:

    sudo cpulimit --limit=25 --pid=!#:4

    Programın CPU'su artık maksimum% 25 ile sınırlıdır

Program başlamak için çok fazla CPU kullanmıyorsa, cpulimit değerini şu anda kullandığı değerin yarısına veya daha azına indirin.

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.