আমার গিগাবিট বন্ড কেন কমপক্ষে 150 এমবি / এস থ্রুপুট সরবরাহ করে না?


17

আমি সরাসরি দুটি আলাদা PCIe- অ্যাডাপ্টারে দুটি পাওয়ারএজ 6950 ক্রসওভার (সরল রেখা ব্যবহার করে) সংযুক্ত করেছি।

আমি এই প্রতিটি লাইনে একটি গিগাবিট লিঙ্ক পেয়েছি (1000 এমবিবিট, পুরো দ্বৈত, উভয় দিকের প্রবাহ কনটোল)।

এখন আমি উভয় পক্ষের আরআর-অ্যালগরিদম ব্যবহার করে এই ইন্টারফেসগুলি বন্ড0-এ বন্ড করার চেষ্টা করছি (আমি একটি আইপি সেশনের জন্য 2000 এমবিট পেতে চাই)।

আমি যখন ডিভি বিএস = 1 এম এবং টিসিপি মোডে নেটক্যাট ব্যবহার করে / dev / শূন্যে / dev / নাল স্থানান্তর করে থ্রুপুটটি পরীক্ষা করি তখন আমি 70 এমবি / সেকেন্ডের পাই না - আশানুরূপভাবে 150 এমবি / সেকেন্ড হয় না।

আমি যখন একক লাইনগুলি ব্যবহার করি তখন আমি প্রতিটি লাইনে প্রায় 98 এমবি / গুলি পাই, যদি আমি প্রতিটি লাইনের জন্য আলাদা দিক ব্যবহার করি। আমি যখন একক লাইনগুলি ব্যবহার করি তখন আমি লাইনে 70 এমবি / গুলি এবং 90 এমবি / গুলি পাই, যদি ট্র্যাফিক "একই" দিকে যায়।

বন্ডিং-রিডমি (/usr/src/linux/ ডকুমেন্টেশন / নেটওয়ার্কিং / বোন্ডিং.টেক্সট) পড়ার পরে আমি নিম্নলিখিত বিভাগটি দরকারী বলে মনে করেছি: (একক স্যুইচ টোপোলজির জন্য 13.1.1 এমটি বন্ডিং মোড নির্বাচন)

ভারসাম্য-আরআর: এই মোডটি একমাত্র মোড যা একক টিসিপি / আইপি সংযোগকে একাধিক ইন্টারফেসে স্ট্রিপ ট্র্যাফিকের অনুমতি দেবে। সুতরাং এটিই একমাত্র মোড যা একক টিসিপি / আইপি স্ট্রিমকে একাধিক ইন্টারফেসের মূল্যের মাধ্যমে আউটপুট ব্যবহার করতে দেয়। এটি একটি ব্যয় হিসাবে আসে: তবে স্ট্রাইপিংয়ের ফলে প্রায়শই পিয়ার সিস্টেমগুলি প্যাকেটগুলি অর্ডার থেকে সরিয়ে নিয়ে যায়, যার ফলে টিসিপি / আইপি-এর কনজেশন নিয়ন্ত্রণ ব্যবস্থা প্রায়শই খণ্ডগুলি পুনঃপ্রেরণ করে।

    It is possible to adjust TCP/IP's congestion limits by
    altering the net.ipv4.tcp_reordering sysctl parameter. The
    usual default value is 3, and the maximum useful value is 127.
    For a four interface balance-rr bond, expect that a single
    TCP/IP stream will utilize no more than approximately 2.3
    interface's worth of throughput, even after adjusting
    tcp_reordering.

    Note that this out of order delivery occurs when both the
    sending and receiving systems are utilizing a multiple
    interface bond.  Consider a configuration in which a
    balance-rr bond feeds into a single higher capacity network
    channel (e.g., multiple 100Mb/sec ethernets feeding a single
    gigabit ethernet via an etherchannel capable switch).  In this
    configuration, traffic sent from the multiple 100Mb devices to
    a destination connected to the gigabit device will not see
    packets out of order.  However, traffic sent from the gigabit
    device to the multiple 100Mb devices may or may not see
    traffic out of order, depending upon the balance policy of the
    switch.  Many switches do not support any modes that stripe
    traffic (instead choosing a port based upon IP or MAC level
    addresses); for those devices, traffic flowing from the
    gigabit device to the many 100Mb devices will only utilize one
    interface.

এখন আমি উভয় সংযুক্ত সার্ভারে সমস্ত পংক্তিতে (4) 12 থেকে 3 পরামিতিটি পরিবর্তন করেছি।

আবার বন্ধনের পরে আমি প্রায় 100 এমবি / সেকেন্ড পাই তবে এখনও এর চেয়ে বেশি নয়।

কোন ধারণা কেন?

আপডেট: এর থেকে হার্ডওয়ারের বিবরণ lspci -v:

24:00.0 Ethernet controller: Intel Corporation 82571EB Gigabit Ethernet Controller (rev 06)
        Subsystem: Intel Corporation PRO/1000 PT Dual Port Server Adapter
        Flags: bus master, fast devsel, latency 0, IRQ 24
        Memory at dfe80000 (32-bit, non-prefetchable) [size=128K]
        Memory at dfea0000 (32-bit, non-prefetchable) [size=128K]
        I/O ports at dcc0 [size=32]
        Capabilities: [c8] Power Management version 2
        Capabilities: [d0] MSI: Mask- 64bit+ Count=1/1 Enable-
        Capabilities: [e0] Express Endpoint, MSI 00
        Kernel driver in use: e1000
        Kernel modules: e1000

চূড়ান্ত ফলাফল আপডেট করুন:

8589934592 বাইট (8.6 গিগাবাইট) অনুলিপি করা হয়েছে, 35.8489 সেকেন্ড, 240 এমবি / সে

আমি অনেকগুলি টিসিপি / আইপি এবং নিম্ন-স্তরের ড্রাইভার বিকল্পগুলি পরিবর্তন করেছি changed এর মধ্যে রয়েছে নেটওয়ার্ক বাফারগুলির সম্প্রসারণ। এই কারণেই ddএখন 200 এমবি / সেকেন্ডের বেশি সংখ্যক সংখ্যা দেখায়: ডিডি সমাপ্ত হয় যখন এখনও আউটপুট স্থানান্তরিত হওয়ার অপেক্ষায় থাকে (প্রেরিত বাফারগুলিতে)।

আপডেট 2011-08-05: সেটিংস যা লক্ষ্য অর্জনের জন্য পরিবর্তন করা হয়েছিল ( /etc/sysctl.conf ):

# See http://www-didc.lbl.gov/TCP-tuning/linux.html
# raise TCP max buffer size to 16 MB. default: 131071
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
# raise autotuninmg TCP buffer limits
# min, default and max number of bytes to use
# Defaults:
#net.ipv4.tcp_rmem = 4096 87380 174760
#net.ipv4.tcp_wmem = 4096 16384 131072
# Tuning:
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
# Default: Backlog 300
net.core.netdev_max_backlog = 2500
#
# Oracle-DB settings:
fs.file-max = 6815744
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500
kernel.shmmax = 2147659776
kernel.sem = 1250 256000 100 1024
net.core.rmem_default = 262144
net.core.wmem_default = 262144
#
# Tuning for network-bonding according to bonding.txt:
net.ipv4.tcp_reordering=127

বন্ড-ডিভাইসের জন্য বিশেষ সেটিংস (এসইএলএস: / ইত্যাদি / সিসকনফিগ / নেটওয়ার্ক / ifcfg-bond0 ):

MTU='9216'
LINK_OPTIONS='txqueuelen 10000'

মনে রাখবেন যে সবচেয়ে বড় সম্ভাব্য এমটিইউ নির্ধারণই ছিল সমাধানের মূল চাবিকাঠি।

জড়িত নেটওয়ার্ক কার্ডগুলির আরএক্স / টিএক্স বাফারগুলির টিউনিং:

/usr/sbin/ethtool -G eth2 rx 2048 tx 2048
/usr/sbin/ethtool -G eth4 rx 2048 tx 2048

আপনি কি /proc/net/bonding/bond0সত্যিই ব্যালেন্স-আরআর সেট হয়ে যাচ্ছেন তা যাচাই করতে পরীক্ষা করে দেখেছেন ? আপনি কি নোট এনটি দেখেছেন যে ডকুমেন্টেশনগুলি আপনি একটি 4 ইন্টারফেস বন্ড সম্পর্কে পেস্ট করেছেন যা কেবলমাত্র আপনাকে 2.3 ইন্টারফেসের মাধ্যমে থ্রুপুট দেয়? এই নোটটি দেওয়া হয়েছে বলে মনে হয় আপনি যে 2000mb / s চান সেটার কাছাকাছি চলে যাবেন এমনটা খুব কমই বলে মনে হচ্ছে।
জোরডাচি

আমি নিশ্চিত নই যে এলএসিপি / বন্ডিং একক টিসিপি সেশনকে একাধিক শারীরিক লিঙ্কে ভাগ করতে পারে।
কেদারে

@ কেদার, এটি এলএসিপি নয়, এটি লিনাক্স বন্ডিং মডিউলগুলির নিজস্ব রাউন্ড-রবিন প্যাকেট শিডিয়ুলার যা একক টিসিপি সেশনের জন্য একাধিক লিঙ্ক ব্যবহার করতে পারে।
larsks

1
কোনও লিঙ্কে থ্রুপুট পরীক্ষার আরও ভাল উপায় ব্যবহার করা nuttcp। একক সংযোগ বা একাধিক সংযোগ সহজে পরীক্ষা করুন।
মাইকিবি

উত্তর:


8

কিছুক্ষণ আগে দুটি গিগাবিট লিঙ্কের উপর একটি ড্রাবডি সিঙ্ক্রোনাইজেশনের গতি বাড়াতে গিয়ে আমার একই সমস্যা হয়েছিল। শেষ পর্যন্ত আমি প্রায় 150MB / সেকেন্ড সিঙ্ক গতি পেতে সক্ষম হয়েছি। এই সেটিংসটি আমি উভয় নোডে প্রয়োগ করেছি:

ifconfig bond0 mtu 9000
ifconfig bond0 txqueuelen 10000
echo 3000 > /proc/sys/net/core/netdev_max_backlog

আপনার যদি ইতিমধ্যে আপনার নেটওয়ার্ক কার্ডের জন্য না থাকে তবে ( ইথোল - কোয়েলসিস সহ ) বাধা সংঘটন সক্ষম করার চেষ্টা করতে পারেন You


আমি জানি না। এটি আমার ক্ষেত্রে দরকার ছিল না। এই পরামিতিগুলি সেট করা যথেষ্ট ছিল। তবে আমার ধারণা আপনি এটি সেট করে রাখলে তাতে কোনও ক্ষতি হবে না। ট্রান্সফার রেট কি উন্নত হয়েছে?
ব্যবহারকারী 842313

1
আমি বর্তমানে এটি পরীক্ষা করতে পারি না, তবে এটি সবচেয়ে প্রস্তাবিত হবে। "একত্রীকরণ" সম্পর্কে আপনার ইঙ্গিতটি সম্ভবত চিহ্নটিকে আঘাত করে। আমি "হাই স্পিড ইথারনেট" সেটিংস সম্পর্কে একটি আকর্ষণীয় নিবন্ধ (জার্মান ভাষায়) পেয়েছি। জাম্বো ফ্রেমগুলি একই দিকে চলে যায় - এটি সমস্ত কাজের চাপ স্থানান্তর করার জন্য প্রয়োজনীয় পিসিআই-বিঘ্নিত সংখ্যা হ্রাস করার বিষয়ে।
নীল

যদি আপনি কিছু এইচডাব্লিউর বাধা বিপত্তি বাধাগুলির সীমাতে যেমন ভাবছেন তবে সংগ্রহ করা মতো একটি সরঞ্জাম অবশ্যই সাহায্য করবে যদিও এর জন্য কিছুটা সেটআপ লাগবে। উদাহরণস্বরূপ, এই গ্রাফটি দেখুন
ব্যবহারকারী 842313

0

আপনি কি স্যুইচটিতে এই দ্বিমুখী ট্রাঙ্কটি কনফিগার করেছেন? যদি না হয় তবে এটি এর মতো কাজ করে না, এটি কেবল সক্রিয় / প্যাসিভ মোডে কাজ করবে এবং 1 জিবিপিএস লিঙ্কগুলির মধ্যে কেবল 1 টি ব্যবহার করবে।


জড়িত কোনও নেটওয়ার্ক ডিভাইস নেই। এগুলি হ'ল সরাসরি ক্রসওভার কেবলগুলি।
নীল

5
আহ, সুতরাং অন্য সম্পূর্ণ কারণের জন্য আপনি ভাগ্যের বাইরে রয়েছেন; এলএসিপি / ইথারচেনাল ট্রাঙ্কগুলি যেমন প্রথমটিতে (এবং যেখানে উপযুক্ত দ্বিতীয় এবং তৃতীয়) গন্তব্য ম্যাকের কমপক্ষে উল্লেখযোগ্য বিটের উপর নির্ভর করে কোন ট্রাঙ্ক সদস্যটি সেই ম্যাকের সাথে যোগাযোগের জন্য ব্যবহৃত হয়। প্রদত্ত আপনার প্রতিটি প্রান্তে ট্রাঙ্কের জন্য কেবল একটি ম্যাক থাকবে তারা কখনও কখনও একটির বেশি লিঙ্ক ব্যবহার করবে না।
চপার 3

2
তিনি ইথারচ্যানেল / 802.3 এডি ব্যবহার করছেন না, তিনি ব্যালেন্স-আরআর ব্যবহার করছেন, যা সঠিকভাবে বলা যায়, এমনকি কোনও সুইচ সমর্থনও লাগবে না।
দ্য ওয়াববিট

@ চপার3: সুতরাং ম্যাক-ইস্যুটি আপনার মতে আরআরে হাজির হওয়া উচিত নয়?
নীল

2
মন্তব্য করার মতো যথেষ্ট পরিমাণে জানেন না, কৃপা চাইছিলেন আপনি এই জিনিসটি আগে উল্লেখ করেছেন তবে কিছু মনে করবেন না।
চপার 3

0

দেখে মনে হচ্ছে পাওয়ারএজ 6950 সম্ভবত পিসিআই স্লটগুলির মধ্যে সীমাবদ্ধ যা পুরো বাস জুড়ে ভাগ করে নেওয়া 133 এমবি / সেকেন্ডে রয়েছে। আপনি সম্ভবত সিস্টেম বাস আর্কিটেকচারে I / O সীমাবদ্ধতা দেখতে পাচ্ছেন।

বিভিন্ন হার্ডওয়্যার এবং অন্যান্য পরীক্ষার জন্য I / O আর্কিটেকচার সহ অন্যান্য সিস্টেম থাকার বাইরেও ক্যাবলিং এছাড়াও কার্যকর হতে পারে। কিছু সম্ভাব্য সংমিশ্রণ বিভিন্ন রেটিং (5 ই বনাম 6) এর লাইনের পাশাপাশি দৈর্ঘ্যের (সংক্ষিপ্ততর সর্বদা ভাল হয় না) হতে পারে।


আমি ইতিমধ্যে 160 এমবি / গুলি পেয়েছি - একত্রে একক লাইনগুলি ব্যবহার করে। তবে বন্ধনের পরে এটি 100 এমবি / সেকেন্ডে নেমে যায়। প্রতিটি একক লাইনে আমি প্রায় 100 এমবি / সেকেন্ড পাই তাই কেবলগুলিও সমস্যা বলে মনে হয় না।
নীল

পাওয়ারজেড 6950 এর জন্য কোনও পিসিআই সমর্থন বলে মনে হচ্ছে না its এর পিসিআই বাসের সাথে কিছু "আলাদা"? তবুও, আপনি পাওয়ারএজ 6950 এর জন্য আইও বাসের স্পেসিফিকেশনগুলি সন্ধান করতে পারেন
ব্যবহারকারী 48838

আমি lspci এর আউটপুট দিয়ে প্রশ্ন আপডেট করেছি। এটি বাধা ছিল না। আমি এখন আমার 200 এমবি / গুলি পাই।
নীল

0

জাম্বো ফ্রেমে?

ifconfig <interface> mtu 9000

এটি কি সিপিইউ লোড হ্রাস করা উচিত? আমি অবাক হই যে এই পরীক্ষাগুলি চলাকালীন সিপিইউ কী করছে।
স্পেসম্যানস্পিফ

1
1500 এর পরিবর্তে 9000 এর এমটিইউ দিয়ে, আপনি একই পরিমাণ ডেটা স্থানান্তর করতে যে পরিমাণ টিসিপি ডেটা প্যাকেটগুলি প্রয়োজন তা হ্রাস করুন (পেডলোডটি আরও বড়)। সুতরাং আপনি উভয় পক্ষ এবং উভয় উপায়ে কম প্যাকেট প্রক্রিয়াকরণ করেন এবং আরও ডেটা প্রেরণ করেন।
জুলিয়ান ভেহেন্ট

দেখে মনে হচ্ছে এটি চেষ্টা করার মতো। স্থানান্তরকালে সিপিইউগুলি বেশ অলস থাকে। তবে আমার এখনও অনুভূতি আছে যে কার্নেল অন্য শারীরিক লিঙ্কে পরবর্তী প্যাকেটটি প্রেরণের আগে একটি শারীরিক লিঙ্ক একটি এসকে জন্য অপেক্ষা করছে।
নীল

আমি ফলাফল সম্পর্কে কৌতূহল। এছাড়াও, প্রতিটি এনআইসিকে একটি সিপিইউ কোরকে আবদ্ধ করার চেষ্টা করুন। সাম্প্রতিক কোনও কার্নেলের এটি সঠিকভাবে পরিচালনা করা উচিত, তবে আমি নিশ্চিত নই যে এটি বন্ধন দিয়ে কীভাবে কাজ করবে। প্রতিটি প্যাকেটের জন্য একটি এল 2 ক্যাশে থেকে অন্যটিতে স্যুইচ করা এড়াতে হবে idea
জুলিয়ান ভেনেন্ট

সিপিইউ লোড কোনও সমস্যা নয়। সমস্ত অফলোড বিকল্পগুলি চালু আছে ...
নীল

0

জাম্বো ফ্রেমগুলি করা একটি বিশাল সহায়তা, যতক্ষণ না আপনার সুইচ এবং নিক এর সমর্থন করে। যদি আপনার কোনও পরিচালনা না করা ছয়ছানা থাকে, সম্ভবত আপনি ব্যান্ডউইথের জন্য যে কোনও জায়গায় যাচ্ছেন তা পেতে যাচ্ছেন না, তবে আপনি যদি পোর্টগুলি একসাথে স্যুইচটিতে আবদ্ধ করে রাখছেন তবে তা ঘটবে না। এখানে ive কিছু শিখেছে দীর্ঘকাল আগে, of 65% সময়, এটি একটি শারীরিক সমস্যা। আপনি কি cat6 কেবল ব্যবহার করছেন?


0

আপনি যদি আপনার নিক্সে জাম্বো ফ্রেমগুলি কনফিগার করেছেন তবে এটির চেহারা দেখে আপনি নিশ্চিত হয়ে গেছেন যে আপনি উচ্চতর এমটিইউ সমর্থন করার জন্য আপনার সুইচগুলিও কনফিগার করেছেন।

জাম্বো ফ্রেমগুলি গিগাবিট নেটওয়ার্কগুলিতে দুর্দান্ত পারফরম্যান্স তবে আপনার এগুলি শেষের দিকে কনফিগার করেছেন তা নিশ্চিত করতে হবে (উত্স এবং গন্তব্য সার্ভার এবং তারা যে নেটওয়ার্ক স্যুইচ ব্যবহার করেন উভয়ই))


এই বিশেষ ক্ষেত্রে কোনও নেটওয়ার্ক ডিভাইস জড়িত নেই। (সরাসরি ক্রসওভার লাইন) এটি একমাত্র (বাস্তব) ক্ষেত্রে যেখানে আপনি একক সেশনের জন্য সমস্ত লাইন জুড়ে লোড ভাগ করে নিতে আরআর অ্যালগরিদম ব্যবহার করতে পারেন।
নিলস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.