Soru Başlatılmış bir sürecin ağ işini sınırlıyor mu? (Linux / FreeBSD)


Bir sürecin başlatılmasından sonra ağın işlenmesini sınırlayacak herhangi bir fayda var mı? Basit örnek: Bir kullanıcının tüm yükleme bant genişliğinizi scp kullanarak aldığını ve oranı sınırlandırmak veya transferin önceliğini azaltmak istediğinizi unutmayın.

Ben bunu elde etmek için iptables / tc veya pf bir arada kullanabilirsiniz sanırım, ama bir "tek-shot" aracı mevcut olup olmadığını merak ettim (--pid seçenek ^^ ile damlama gibi)?


10
2017-12-29 16:05


Menşei


"Damlama" mı demek istediniz? - halp
Düzenleme: "Damlama" amaçlandığını farz ettim. - Steven Monday


Cevaplar:


Ne yazık ki FreeBSD için böyle bir çözüm yok. Farklı kullanımlara göre ağ kullanımını sınırlamak için kullanılan dummynet / ipfw veya altq / pf gibi birçok çözüm vardır.

Linux üzerinde ağ kullanımını kullanıcı bazında sınırlamanın bir yolu vardır:

iptables -t mangle -A OUTPUT -p tcp -m owner --uid-owner test -j MARK --set-mark 1

Pid'e dayalı ağ kullanımını sınırlayacak bir çözüm bulunmadığını düşünüyorum.


3
2017-12-29 22:22



FreeBSD'nin ipfw'si ayrıca uid tarafından trafiği eşleştirebilir - gelraen


Proc'un kullandığı ağ bağlantı noktalarını alma işlemi. Hangi portların kullanıldığını biliyorsanız, bu portları sınırlamak için IPTABLES kurallarını kullanabilirsiniz. Bu makaleler size daha iyi bir fikir vermelidir: http://linux-ip.net/articles/Traffic-Control-HOWTO/ http://blog.edseek.com/~jasonb/articles/traffic_shaping/ http://wikis.sun.com/pages/viewpage.action?pageId=49906332


1
2018-01-11 06:07





"--Pid-sahibi" seçeneği "sahip" iptables modülünden terk edildiğinden, Linux'ta, iptables ve tc'nin bile bir araya gelmesi zor bir problem olabilir (tabloya bakınız not İşte). Aslında, sadece bu ilişki (paket - süreç) karmaşık gibi gözükürken, gerisini kolayca halledebiliriz, yani filtreleri ve paketleri sınırlandırabiliriz.


0
2017-12-29 23:11





Bunun için hazır bir çözüm olduğunu düşünmüyorum. Ancak, standart Linux araçlarını kullanarak, bunu yapacak bir komut dosyasını kesebilirsiniz.

Öncelikle, lsof ile belirli işlemlerin tüm bağlantılarının bir listesini alabilirsiniz. Ardından, bu bağlantılar için tc ile giriş politikaları oluşturabilirsiniz.


0
2018-01-04 05:54





Kaba, eğer işlem biraz + 20'ye kadar çıkarsa, sistem üzerinde çalışan başka herhangi bir şey öncelik kazanacak ve iş daha az sıklıkta planlanacaktır, bu yüzden bazı TCP'lere yol açacak arabellekleri veya işlem paketlerini doldurmak daha zor olacaktır. daraltma. Sporadik olacak, ancak yeterince yardımcı olabilir.

# renice 20 -p $pid

0
2018-01-05 11:33



Bu, bant genişliğini kontrol etmenin çok dolambaçlı bir yoludur ve gerçekten sadece sistem çalışıyorsa çalışacaktır. çok ağır yüklü - Boşta bir sistemde, -20'ye kadar olan bir süreç, CPU'yu istediği sıklıkta alacaktır. - voretaq7
Doğru, ancak bu bant genişliği diğer yerel bilgisayarlarla paylaşılmazsa, makine boşta kalırsa, bu işlemin tüm bant genişliğini alması umrumda değil. Sadece önemli olan bant genişliğini kullanmaya çalışan başka bir süreç olduğunda. “Çok ağır yüklü” farklı tanımlarını kullanabiliriz - eğer çalıştırmaya çalışan başka bir süreç varsa, öncelik kazanır ve eğer yük ortalaması çekirdek başına 1 = 1 ise, bu yardımcı olabilir. Ben bu ham olduğunu not aldım ama eğer mevcut tek alet (FreeBSD) ise en azından bir atış. - Phil P