একক থ্রেডের চেয়ে কেন মাল্টি থ্রেড দ্রুত ডাউনলোড হচ্ছে?


13

আমার সার্ভারে একটি বড় ফাইল রয়েছে। আমি দেখতে পেয়েছি যে মাল্টি থ্রেড ডাউনলোড 20 এমবিএস পেতে পারে তবে একক থ্রেড 10 এমবিপিএস পেতে পারে, কেউ কি এটি ব্যাখ্যা করতে পারেন?


একই টিসিপি সংযোগটি সরবরাহকারী একাধিক থ্রেড, বা পৃথক টিসিপি সংযোগ সহ প্রতিটি একাধিক থ্রেড? এছাড়াও আপনি কি বলছেন সার্ভারটি মাল্টিথ্রেড, বা ক্লায়েন্টটি মাল্টিথ্রেড, বা উভয়ই?
স্পিফ

উত্তর:


14

সাধারণত এটি কারণ আপনার এবং অন্য সার্ভারের মধ্যে কোথাও কোনও ফায়ারওয়াল প্রতিটি এইচটিটিপি প্রবাহকে 10 এমবিপিএসের মধ্যে সীমাবদ্ধ করে। আপনি যখন মাল্টি-থ্রেড ব্যবহার করেন, আপনি 2x 10 এমবি পাবেন (প্রতিটি থ্রেডের জন্য একটি)।


1
আমি এফটিপি ব্যবহার করি এবং আমার সার্ভারে কোনও সীমাবদ্ধতা নেই
কেন 6

@ কেন: সম্ভবত এটি আপনার আইএসপি যা প্রতিটি সংযোগটি 10 ​​এমবিপিএস-এ সংযুক্ত করছে? আপনি একটি গতি পরীক্ষক এর চেয়ে আরও পেতে পারেন?
আন্দ্রে পরামেস

4

এটি আপনার এবং সার্ভারের মধ্যে আপনার পিং এবং আপনার ডাউনলোডিং সফ্টওয়্যার দ্বারা ব্যবহৃত প্যাকেটের আকার / টিসিপিপ উইন্ডো আকারের কারণে ঘটে।

মূলত, আপনার যদি সার্ভারে 100 মিমি পিং থাকে এবং 100kb এর প্যাকেটগুলির জন্য অনুরোধ করা হয় তবে আপনার ইন্টারনেটের গতি অসীম হলেও, আপনি কেবল 1 সংযোগ ব্যবহার করে প্রতি সেকেন্ডে 10 প্যাকেট পেতে পারেন।


আপনার প্রতিটি প্যাকেট এসি করার দরকার নেই, যতক্ষণ না রিসিভার তার বাফারকে যুক্তিসঙ্গত হারে খালি করে রাখে, প্রেরকের ক্রমাগত তাদের পাম্প করতে সক্ষম হওয়া উচিত।
আন্দ্রে পরামেস

সেটা ঠিক. এমনকি 256kb বাফার দিয়েও পিং এখনও ব্যাপক মন্দা সৃষ্টি করে
বার্সমন্সটার

3

আপনি "পাইপ পূর্ণ" রাখলে টিসিপি সবচেয়ে ভাল কাজ করে - প্রেরক অ্যাপ্লিকেশন যখন প্রেরককে টিসিপি স্ট্যাক ক্রমাগত ডেটা সরবরাহ করে রাখার জন্য যথেষ্ট পরিমাণে বাফার পাঠায় তখন এটি নেটওয়ার্কে সর্বদা "ফ্লাইটে" থাকতে পারে এবং যখন রিসিভার থাকে অ্যাপ্লিকেশনটি রিসিভার টিসিপি স্ট্যাক থেকে দ্রুত পাঠ করে রাখে যে রিসিভার টিসিপি উইন্ডোটি কখনই পূরণ করে না (আবার, সুতরাং প্রেরণকারী টিসিপি স্ট্যাকটি সর্বদা নেটওয়ার্কে ডেটা "ফ্লাইটে" রাখতে পারে)।

আমি কল্পনা করতে পারি যে দুর্বল-লিখিত একক থ্রেডেড প্রেরক অ্যাপ্লিকেশনটি টিসিপি স্ট্যাকের কাছে একটি বাফারকে পাস করে, এটি পুরোপুরি আদায় করা হয়েছে শুনে শোনার জন্য অপেক্ষা করে এবং অন্য একটি বাফারকে পাস করে। এর অর্থ হ'ল একবার নেটওয়ার্কে প্রথম বাফারটির শেষে "ফ্লাইটে" পৌঁছে যাওয়ার পরে প্রেরণকারী টিসিপি স্ট্যাকটি প্রেরণের জন্য অনাহারে থাকে, যার অর্থ পাইপ নিকাশী থাকে এবং এ্যাক ফিরে না আসা এবং প্রেরণকারী অ্যাপ্লিকেশন না হওয়া পর্যন্ত পুনরায় পূরণ করা হয় না এটি একটি নতুন বাফার পাস।

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


সুতরাং, একক থ্রেডযুক্ত হওয়ার সাথে এর কোনও যোগসূত্র থাকতে পারে?
এপি-ইনাগো

@ এপি-ইনাগো শিওর, একটি লিখিত একক থ্রেডযুক্ত অ্যাপ্লিকেশন পাইপটি পূর্ণ রাখতে পারে, হ্যাঁ।
স্পিফ

2

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


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