मैं प्रति एप्लिकेशन के आधार पर नेटवर्क बैंडविड्थ को कैसे प्राथमिकता दे सकता हूं?


20

क्या नेटवर्क बैंडविड्थ के लिए विशिष्ट अनुप्रयोग को अधिक / कम प्राथमिकता देने के लिए लिनक्स में एक तरीका है? niceसीपीयू प्राथमिकता के लिए कुछ कैसे करता है।

संदर्भ: मैं वर्तमान में बहुत कम बैंडविड्थ कनेक्शन (3 जी डोंगल) पर हूं। जब मैं एक बहुत बड़े अपग्रेड का उपयोग कर रहा होता हूं aptitude, तो वेब को ब्राउज़ करना लगभग असंभव हो जाता है क्योंकि अपग्रेड डाउनलोड मेरा इंटरनेट कनेक्शन हॉगिंग कर रहा है।

इसलिए मैं जो करना चाहूंगा, वह किसी तरह aptitudeप्रक्रिया की नेटवर्क बैंडविड्थ प्राथमिकता (और उसके सभी बच्चों) को कम करना है ताकि यह बहुत अधिक बैंडविड्थ का उपयोग न करे जबकि दूसरी प्रक्रिया इसका उपयोग कर रही है।


क्या एप्टीट्यूड अपने कनेक्शन के लिए एक विशिष्ट पोर्ट का उपयोग करता है? यदि हां, तो आप अपने राउटर में QoS का उपयोग करके उस पोर्ट लोअर की प्राथमिकता निर्धारित कर सकते हैं (यदि आपके राउटर में वह क्षमता है)।
MaQleod

@MaQleod: 1) नहीं, यह अपने डाउनलोड के लिए HTTP का उपयोग करता है। 2) जब से मैं 3G नेटवर्क पर हूं, मेरे पास राउटर नहीं है (ठीक है, एक नहीं जो मैं वैसे भी एक्सेस कर सकता हूं)।
जॉब

मैं सिर्फ अपनी प्राथमिकता के साथ खेलने की कोशिश करने के बजाय एप्टीट्यूड / एप की डाउनलोड गति को सीमित करूंगा। ब्राउज़िंग के लिए कुछ छोड़ने के लिए इसे अपने अधिकतम बैंडविड्थ के आधे हिस्से पर सेट करें। मैंने कैटलन के जवाब में टिप्पणी में क्यूओएस के साथ नहीं खेलने के लिए अपने कारण बताने की कोशिश की है।
vtest

जवाबों:


8

आप किसी अनुप्रयोग के सभी सॉकेट्स के लिए प्राथमिकता निर्धारित करने के लिए force_bind का उपयोग कर सकते हैं, और फिर, Linux QoS (tc कमांड) का उपयोग करके, आप अनुप्रयोगों को प्राथमिकता बैंड में असाइन कर सकते हैं। एक उदाहरण के लिए README फ़ाइल की जाँच करें।

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

डिस्क्लेमर: मैं लेखक हूं।

उदाहरण:

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

बेशक, आप htb या किसी अन्य qdisc का उपयोग कर सकते हैं।


3
अस्वीकरण के लिए धन्यवाद! सुपर उपयोगकर्ता की भावना में, यह बहुत अच्छा होगा यदि आप सभी को देखने के लिए यहां उदाहरण प्रदान कर सकते हैं!
slhck

1
डाउनलोडिंग आने वाले ट्रैफ़िक को उत्पन्न करता है। QoS आउटगोइंग ट्रैफ़िक को नीति बना सकता है, यह आने वाले डेटा की मात्रा को नियंत्रित नहीं कर सकता है। काम करने के लिए, मेजबान और इंटरनेट के बीच राउटर को नियंत्रित करना आवश्यक है।
vtest

2
trickle(कम से कम उबंटू और डेबियन में उपलब्ध है) आप के लिए भी यही करेंगे, और उपयोग करने के लिए थोड़ा आसान हो सकता है trickle -d 1 -u 1 aptitude:। संख्या किलोबाइट हैं।
तनेली

1
आने वाले ट्रैफ़िक के बारे में, क्या यह संभव है कि आने वाले ट्रैफ़िक के कुछ प्रकार अन्य राउटर पर उच्च प्राथमिकता रखते हैं, भले ही आप राउटर को नियंत्रित नहीं कर सकते हों? @vtest
CMCDragonkai

3
@taneli: trickleएक बैंडविड्थ सीमा को सेटअप करने के लिए उपयोग किया जा सकता है, लेकिन इसका इस्तेमाल प्रक्रियाओं के बीच प्राथमिकताओं को परिभाषित करने के लिए नहीं किया जा सकता है
a3nm
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.