ফ্রিবিএসডি-তে নেট.inet.tcp.tcbabshsize কেন পরিবর্তন করবেন?


8

কার্যত প্রতিটি ফ্রিবিএসডি নেটওয়ার্ক টিউনিং নথিতে আমি খুঁজে পেতে পারি:

# /boot/loader.conf
net.inet.tcp.tcbhashsize=4096

এটি সাধারণত "টিসিপি নিয়ন্ত্রণ-ব্লক হ্যাশ টেবিল টিউনিং" বা "এটি একটি যুক্তিসঙ্গত মানতে সেট করুন" এর মতো কিছু অস্বাস্থ্যকর বিবৃতি দিয়ে যুক্ত করা হয়। man 4 tcpহয় না খুব একটা সাহায্য:

tcbhashsize         Size of the TCP control-block hash table (read-only).
                    This may be tuned using the kernel option TCBHASHSIZE
                    or by setting net.inet.tcp.tcbhashsize in the
                    loader(8).

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

টিসিপি নিয়ন্ত্রণ ব্লকটি ঠিক কী জন্য ব্যবহার করা হয়? আপনি কেন এর হ্যাশের আকার 4096 বা অন্য কোনও নির্দিষ্ট সংখ্যায় সেট করতে চান?


+1, খুব আকর্ষণীয় প্রশ্ন!
জান্নে পিক্কারাইনেন

আফাইক, উপযুক্ত সকেটে প্যাকেট সরবরাহের জন্য সমস্ত তথ্য inpcbকেবলমাত্র মাধ্যমে উপলব্ধ ।
SaveTheRbtz

উত্তর:


3

এটি কম্পিউটার বিজ্ঞানের প্রশ্নের মতোই। বিশেষত যদি আপনি হ্যাশ টেবিল এবং বিগ-ও স্বরলিপিগুলি খনন করতে চান ।

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

আপনি যে প্যারামিটারটি উল্লেখ করেছেন - tcbhashsizeএটি হ্যাশ টেবিলের মূলত বালতির সংখ্যা।
আমাদের সার্ভারগুলিতে এটি বেশ উচ্চ মানের যেমন 16384এবং এর চেয়েও উচ্চতরতে সেট করা থাকে । এই সেটিংটি সহ আমরা প্রতিটি সার্ভারে প্রায় 60,000 সংযোগগুলি পরিচালনা করছি।

বর্তমানে x86_64 এ হ্যাশ টেবিলের প্রতিটি এন্ট্রি প্রতিটি প্রবেশের জন্য কার্নেল মেমরির 252 বাইট ( tcp_inpcb) + 688 বাইট ( tcpcb) ব্যবহার করে (7.2+ আইআইআরসি থেকে এমডি 64 এ কেমিএম আকার 512 জি)। এটি মাধ্যমে দেখা যেতে পারে vmstat -z

টিসিপি কন্ট্রোল ব্লকের কাঠামো সম্পর্কে আপনি ফ্রিবিএসডি সূত্রগুলি পড়তে পারেন: tcp_var.h বা টিসিপি / আইপি ইলাস্ট্রেটেড, খণ্ড 2: বাস্তবায়ন গ্যারি আর রাইট, ডব্লিউ রিচার্ড স্টিভেন্স দ্বারা


); এটা সব ঝাপসা ছিল কিন্তু এখন এই অস্পষ্ট সি হেডার সঙ্গে সবকিছু পরিষ্কার
gparent

আমি বুঝতে পেরেছি কেন হ্যাশটেবলে বালতির সংখ্যা বাড়ানো সেই বালতিগুলিতে লুকিংয়ের পারফরম্যান্সে সহায়তা করবে, আমি বুঝতে পারি না যে এটি আসলে এই মানটি কী করছে। যদি এটি বালতিগুলির একটি টেবিল হয়, তবে আমি মনে করি টিসিপিসিবি সত্যই সেখানে সকেটের তথ্য সঞ্চিত রয়েছে যাতে টিসিপি বিভাগগুলি সঠিক রিসিভারের সাথে মিলে যায়। আপনি এটা নিশ্চিত করতে পারেন? এছাড়াও, এই সাইটের উদ্দেশ্যগুলির অংশটি হ'ল সমষ্টিগত তথ্য, সুতরাং "উত্সটি পড়ুন" বা "একটি বই পড়ুন" উত্তরগুলি খুব কার্যকর নয়।
sh-beta

আপনি কীভাবে আপনার টিউনিংয়ে এসেছেন 16384? কেন? এবং সেই মানটির জন্য আপনি কী বলি দিচ্ছেন (আমি কর্নেলের স্মৃতি ধরেছি, তবে কত?)? এটি যদি নিখরচায় পারফরম্যান্সের জয় হয়, তবে আমি ভাবতে চাই যে এটি ডিফল্ট হবে। অবশ্যই এটি কিছু ব্যয়।
sh-beta

আমার মতে এই মানটি এই সার্ভারটি সামঞ্জস্য করতে ইচ্ছুক সমবর্তী সংযোগগুলির সংখ্যার কিছুটা কাছাকাছি সেট করা উচিত। পুনশ্চ. আপনি কি সত্যই সোর্স / বই না পড়ে কোনও ক্ষেত্রে বিশেষজ্ঞ হতে চান? =)
SaveTheRbtz

1
@ সেভ দ্যআরবিটিজ আমি এই ধারণাটিকে ঘৃণা করি যে, আপনি যদি কোনও প্রযুক্তি ব্যবহার করেন তবে আপনাকে প্রশ্ন জিজ্ঞাসা বন্ধ করতে হবে বা কোডটির ক্ষেত্রে এত বিশেষজ্ঞ হওয়া দরকার যে আপনি নেটওয়ার্ক স্ট্যাকের প্রতিটি স্বতন্ত্র কাঠামোর যথাযথ উদ্দেশ্যটি আবৃত্তি করতে পারেন। স্ট্যাকএক্সচেঞ্জের উদ্দেশ্য জ্ঞানের আদান-প্রদান। আমি কিছু জিনিস বিশেষজ্ঞ এবং অন্যদের না। সেই লাইনটি আমার কাজ দ্বারা নির্ধারিত হয় যেখানে আমার সাবধানে আমার কোথায় সময় কাটাতে হবে তা সতর্কতার সাথে বেছে নিতে হবে। তবে এর অর্থ এই নয় যে আমি সহজেই "পরামর্শ" টিউন করার জন্য বিষয়বস্তু যা অবিচ্ছিন্নভাবে অনুলিপি করে অনুলিপি করা হয়েছে এবং ব্লগ থেকে ব্লগে আটকানো হয়েছে বলে মনে হয়।
sh-beta
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.