Uygulamaya göre ağ bant genişliğini nasıl önceliklendirebilirim?


20

Linux'ta ağ bant genişliği için belirli bir uygulamaya daha fazla / daha az öncelik vermenin bir yolu var mı? niceCPU önceliği için nasıl bir şey olduğu gibi .

Bağlam: Şu anda çok düşük bir bant genişliği bağlantısına (3G dongle) bağlıyım. Kullanarak oldukça büyük bir yükseltme yaparken aptitude, yükseltme indirmesi İnternet bağlantımı kurduğu için internette gezinmek neredeyse imkansız hale geliyor.

Bu yüzden yapmak istediğim şey, bir şekilde aptitudeişlemin (ve tüm çocuklarının) ağ bant genişliği önceliğini azaltmak, böylece başka bir işlem kullanırken fazla bant kullanmayacak olması.


Yetenek, bağlantıları için belirli bir bağlantı noktası kullanıyor mu? Öyleyse, yönlendiricinizde QoS kullanarak bu yönlendiricinin önceliğini daha düşük ayarlayabilirsiniz (yönlendiricinizde bu özellik varsa).
MaQleod

@ MaQleod: 1) Hayır, indirmeleri için HTTP kullanır. 2) 3G şebekesinde olduğum için bir yönlendiricim yok (zaten erişebileceğim biri değil).
İş

Önceliği ile oynamaya çalışmak yerine yetenek / apt indirme hızını sınırlandırdım. Bazılarını göz atmaya bırakmak için maksimum bant genişliğinin yarısına ayarlayın. Catalin'in cevabına yaptığı açıklamada QoS ile oynamadığım için nedenimi belirtmeye çalıştım.
33'te

Yanıtlar:


8

Bir uygulamanın tüm soketleri için bir öncelik belirlemek için force_bind komutunu kullanabilirsiniz ve ardından Linux QoS (tc komutu) kullanarak uygulamaları öncelikli bir gruba atayabilirsiniz. Örnek için README dosyasına bakınız.

http://kernel.embedromix.ro/us/

Yasal Uyarı: Ben yazarım.

Örnek:

14: Force priority (between 0 and 6 for non-root users). You can
        use 'tc' command from iproute to set-up 'prio' qdisc and to
        assign prio to queues:
        # 0. setup
        export FORCE_NET_VERBOSE=1
        export LD_PRELOAD=${LD_PRELOAD}:/usr/lib/force_bind.so
        # 1. Make sure you have a 'prio' qdisc attached to eth0, for example:
        tc qdisc add ev eth0 root handle 1: prio
        # 2. Assign applications to classed (bands):
        export FORCE_NET_PRIO=6 # interactive, band 0
        your_voip_program_here
        export FORCE_NET_PRIO=0 # best effort, band 1
        your_mail_program_here
        export FORCE_NET_PRIO=2 # bulk, band 2
        your_remote_backup_program_here
        # 3. Run tc statistics so you can see the classification:
        tc -s class show dev eth0

Tabii ki, htb veya başka herhangi bir qdisc kullanabilirsiniz.


3
Yasal uyarı için teşekkür ederiz! Süper Kullanıcı ruhuna göre, burada herkesin görmesi için örnek verebilirseniz çok iyi olur!
slhck

1
İndirme gelen trafiği oluşturur. QoS giden trafiği politikalandırabilir, gelen veri miktarını kontrol edemez. Bunun çalışması için, ana bilgisayar ile internet arasındaki yönlendiriciyi kontrol etmek gerekir.
28'te

2
trickle(Mevcut Ubuntu ve Debian en az) de sizin için yapacak ve biraz daha kolay kullanım için olabilir: trickle -d 1 -u 1 aptitude. Sayılar kilobayttır.
taneli

1
Gelen trafikle ilgili olarak, yönlendiriciyi kontrol edemeseniz bile belirli gelen trafik türlerinin diğer tiplere göre daha yüksek önceliğe sahip olması mümkün mü? @vtest
CMCDragonkai

3
@taneli: tricklebant genişliği sınırı ayarlamak için kullanılabilir, ancak işlemler arasındaki öncelikleri tanımlamak için kullanılamaz
a3nm
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.