কীভাবে থ্রোটলড এড়ানো যায়?


9

আমি একটি নেটওয়ার্কযুক্ত আইওএস গেম লিখছি। প্যাকেটগুলি প্রেরণ করার সময় GKMatchSendDataReliable(যা আমি ধরে নিয়েছিলাম যে তাদের নিজস্ব প্যাকেট সংবর্ধনা কোড লিখিত আছে) প্রতি সেকেন্ডে 60 প্যাকেটে (সুতরাং সংলগ্ন প্যাকেটের মধ্যে 16 এমএস) খুব দ্রুত খারাপ হয়: আমি নীচে 7 গেমসেন্টার ম্যাচগুলি খোলে (একের পর এক) ) এবং সহজেই 100 প্যাকেটের একটি "বন্যা" প্রেরণ করে (প্রতি সেকেন্ডে 60 প্যাকেটের হারে)। আমি গড় রাউন্ডট্রিপ সময় পরিমাপ করেছি এবং এগুলি ফলাফল:

[ 21:16:39 ]:  I saw an average roundtrip time of 52.342787 ms, he saw 54.496590 ms
[ 21:16:34 ]:  I saw an average roundtrip time of 62.631942 ms, he saw 61.991655 ms
[ 21:16:45 ]:  I saw an average roundtrip time of 88.394380 ms, he saw 83.619123 ms
[ 21:16:51 ]:  I saw an average roundtrip time of 179.053118 ms, he saw 156.869141 ms
[ 21:16:57 ]:  I saw an average roundtrip time of 75.025076 ms, he saw 75.419723 ms
[ 21:17:23 ]:  I saw an average roundtrip time of 8832.082488 ms, he saw 7616.877558 ms
[ 21:19:33 ]:  I saw an average roundtrip time of 25088.962344 ms, he saw 16833.064914 ms

শেষ 2 টি পরীক্ষার পরে ফলাফলগুলি প্রায় 1000 এমএস।

দেখে মনে হবে যে আমি থ্রটল হয়ে যাচ্ছি, সম্ভবত আমার আইএসপি। কারণ এটি একটি আইওএস গেম, লোকেরা নিয়মিত আবাসিক সংযোগ ব্যবহার করবে।

আমি যখন প্যাকেট প্রেরণের হারকে 10 গুণ ধীর করে (তাই প্রতি 160 এমএসে 1 প্যাকেট) পরিবর্তন করি তখন পরীক্ষাগুলি অনেক বেশি সময় নেয় তবে রাউন্ডট্রিপ বার ধারাবাহিকভাবে কম থাকে।

[21:31:27]: আমি গড়ে 55.289109 এমএসের রাউন্ডট্রিপ সময়টি দেখেছি, সে 69.032727 এমএস দেখেছিল

সুতরাং দেখে মনে হচ্ছে যে সংযোগটি কম বিলম্ব করে রাখা (এবং আইএসপিগুলিতে "শাস্তি দেওয়া হবে না") আমি যে প্যাকেটগুলি প্রেরণ করি তা হ্রাস করতে হবে। এগুলি খুব ছোট প্যাকেটগুলি মনে রাখবেন, 40 বাইট সর্বাধিক, তবুও আমি এখনও থ্রটলড করছি।

থ্রটল হওয়া এড়াতে আমি প্রতি সেকেন্ডে কতটা ইউডিপি প্যাকেট পাঠাতে পারি তার গাইডলাইন সন্ধান করছি! কোথাও কোন সাধারণ নির্দেশিকা আছে?


আপনি পরীক্ষা করেছেন? আপনি যদি 10 প্যাকেট / সেকেন্ডে ছেড়ে যান তবে কি হবে? আপনি কি তখন মারাত্মকভাবে আতঙ্কিত হয়ে পড়েছেন? এটি আপনার প্রশ্নের শেষ অংশটির উত্তর দিতে সহায়তা করতে পারে।
notlesh

"কোনও ছেলের সম্পর্কে কীভাবে সে আপনাকে গলা টিপে হত্যা করে তার সম্পর্কে আপনি অনেক কিছুই বলতে পারেন ..." ওহ আপনি 'থ্রোটল' এর সংজ্ঞাটি বোঝাতে চেয়েছিলেন: পি
কেসি

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

মনে হচ্ছে আমি ভুল করে ফেলেছি। এটি আবারও নাগলেস হতে পারে।
বোবোবোবো

উত্তর:


9

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

কিছু ক্লায়েন্ট-সাইড ইন্টারপোলেশন সহ 10Hz আপডেটের জন্য শুটিংয়ের চেষ্টা করুন। আমি ধরে নিই যে আপনি ইতিমধ্যে ইন্টারপোল্ট করছেন কারণ সর্বদা পিং দেরি হবে।

দীর্ঘ সময়ের ফ্রেমটি coverাকতে এমটিইউ আকার এবং আরও তথ্য ছুঁড়ে ফেলা হয়েছে। ট্রান্সপোর্ট লেয়ারে গড়ে প্যাকেটের আকার 1400 বা তার বেশি হবে, এমটিইউ আকারের যে কোনও কিছুই আপনার বার্তাকে বিভক্ত করবে এবং আরও বেশি ওভারহেডের কারণ করবে।


7

প্রথমত, আপনাকে নিশ্চিত করতে হবে যে পুরো ডেটাটি কত বড়। আপনার আইএসপি সম্ভবত প্রেরিত প্রকৃত বাইটগুলি সম্পর্কে যত্নশীল হবে, ডেটাগ্রামের পরিমাণ বা ফ্রিকোয়েন্সি নয়। আপনি যদি সেকেন্ডে সর্বাধিক (65507 পে-লোড অক্টকেটস) মাপের ডেটাগ্রামগুলি 60 বার প্রেরণ করছেন তবে আপনি প্রায় 30 এমবি / সেকেন্ড স্ট্রিম প্রেরণ করছেন। প্রত্যেকেরই এ জাতীয় সংযোগ নেই।

মনে রাখবেন যে আইপি শিরোনাম 20 অক্টেট দীর্ঘ, এবং ইউডিপি শিরোনামটি 8 টি অক্টেট দীর্ঘ। এটি প্রতিটি 28 ডিগ্রিগ্রামের জন্য আপনি অতিরিক্ত 28 টি অক্টেট পাঠাচ্ছেন।

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

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

ওয়্যারশার্কের সাহায্যে আপনি নেটওয়ার্ক ট্র্যাফিক নির্ধারণ করতে পারেন এমন বেশ কয়েকটি উপায় রয়েছে:

  • একটি কম্পিউটারে ওয়াইরশার্ককে একই নেটওয়ার্কে একটি মোবাইল ডিভাইস হিসাবে ব্যবহার করুন, একটি প্রমিসিউস হাব এবং আপনার নেটওয়ার্ক ডিভাইসটিকে দুর্বল হিসাবে সেট করুন

  • একটি পিসিটিকে একটি ওয়্যারলেস গেটওয়ে হিসাবে সেট করুন এবং আপনার মোবাইল ডিভাইসটিকে gate গেটওয়েতে সংযুক্ত করুন, তারপরে পিসি ওয়্যারশার্কের সাথে শুনুন

  • এমুলেটর হিসাবে একই মেশিনে ওয়্যারশার্ক চালান

  • ডিভাইসে নিজেই tcpdump চালান (অ্যান্ড্রয়েডে সহজ, আইওএস এ জেলব্রেক প্রয়োজন), এবং তারপরে ওয়্যারশার্কে ক্যাপচার করা ডেটা পড়ুন

  • একটি সাধারণ প্রোগ্রাম তৈরি করুন যা ঠিক একই জিনিসটি করে তবে এটি পিসিতে কাজ করে এবং সেখানে ওয়্যারশার্ক ব্যবহার করে।

  • ... এবং আরও অনেক কিছু

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

সাধারণত, আপনি যদি নেটওয়ার্কটি থ্রটল করে থাকেন তবে আপনার আইসিএমপি টাইপ 4 টি ডাটাগ্রাম পাওয়া উচিত, যাতে আপনি ঠিক কোথায় থ্রটলড হচ্ছেন তা যাচাই করতে আপনি সেগুলি ব্যবহার করতে পারেন।

উপসংহারে, আপনার প্যাকেজগুলি বিলম্ব হতে পারে এমন অনেকগুলি কারণ রয়েছে এবং আপনি সমস্যাটি সমাধান করার চেষ্টা শুরু করার আগে সমস্যাটি কোথায় তা খুঁজে বের করা বুদ্ধিমানের কাজ হবে।


0

এটি আমার অনুমানগুলির একটি ভুল ছিল বলে মনে হচ্ছে। এই অনুযায়ী :

GKMatchSendDataUnreliable মোড, চিত্রটি তথাকথিত ইউডিপিতে সংক্রমণ করার জন্য। GKMatchSendDataReliable মোড চিত্র টিসিপি দ্বারা প্রেরণ। এটি সাধারণত একটি GKMatchSendDataUnreliable হওয়া উচিত।

প্রেরণ মোডটি বাস্তব ইউডিপিতে (যেমন GKMatchSendDataUnreliable) প্রতি সেকেন্ডে 60 প্যাকেটে কম পিং রেট বজায় রাখার জন্য উপস্থিত হয় । দেখে মনে হচ্ছে আমি আবারও নাগলেসে আক্রান্ত হয়েছি ।

আমি এখনও অদ্ভুত আচরণ পেয়েছি (খুব বেশি পিংয়ের সময়কালের সাথে) তবে আমি নিশ্চিত নই যে মূল কারণটি (আইএসপি বা নেটওয়ার্কের ভিড়)।

[ 10:30:33 ]:  I saw an average roundtrip time of 39.908923 ms, he saw 48.437794 ms
[ 10:30:39 ]:  I saw an average roundtrip time of 26.278577 ms, he saw 27.023854 ms
[ 10:30:48 ]:  I saw an average roundtrip time of 23.254163 ms, he saw 24.495182 ms
[ 10:30:54 ]:  I saw an average roundtrip time of 37.333127 ms, he saw 34.780404 ms
[ 10:31:03 ]:  I saw an average roundtrip time of 29.198575 ms, he saw 29.071106 ms
[ 10:31:11 ]:  I saw an average roundtrip time of 49.030299 ms, he saw 48.675459 ms
[ 10:31:18 ]:  I saw an average roundtrip time of 34.031792 ms, he saw 34.698117 ms
[ 10:31:24 ]:  I saw an average roundtrip time of 30.058642 ms, he saw 32.814952 ms
[ 10:31:30 ]:  I saw an average roundtrip time of 53.110438 ms, he saw 54.271453 ms
[ 10:31:45 ]:  I saw an average roundtrip time of 119.693933 ms, he saw 107.616359 ms
[ 10:31:50 ]:  I saw an average roundtrip time of 222.644443 ms, he saw 229.589861 ms
[ 10:31:57 ]:  I saw an average roundtrip time of 166.827070 ms, he saw 167.647724 ms
[ 10:32:05 ]:  I saw an average roundtrip time of 765.356593 ms, he saw 859.600923 ms
[ 10:32:13 ]:  I saw an average roundtrip time of 357.522686 ms, he saw 339.648654 ms
[ 10:32:24 ]:  I saw an average roundtrip time of 1115.639593 ms, he saw 1060.574401 ms
[ 10:32:39 ]:  I saw an average roundtrip time of 175.845995 ms, he saw 171.112166 ms
[ 10:32:44 ]:  I saw an average roundtrip time of 47.262925 ms, he saw 41.987869 ms
[ 10:32:52 ]:  I saw an average roundtrip time of 74.524443 ms, he saw 78.868198 ms
[ 10:33:47 ]:  I saw an average roundtrip time of 20.943917 ms, he saw 21.217377 ms
[ 10:33:52 ]:  I saw an average roundtrip time of 28.944821 ms, he saw 29.303144 ms
[ 10:34:06 ]:  I saw an average roundtrip time of 25.581624 ms, he saw 25.439416 ms
[ 10:34:13 ]:  I saw an average roundtrip time of 25.565568 ms, he saw 25.655267 ms
[ 10:34:18 ]:  I saw an average roundtrip time of 38.609394 ms, he saw 37.462835 ms

পরবর্তীতে:

[ 10:38:11 ]:  I saw an average roundtrip time of 40.037623 ms, he saw 43.367524 ms
[ 10:38:21 ]:  I saw an average roundtrip time of 121.222703 ms, he saw 118.855264 ms
[ 10:38:28 ]:  I saw an average roundtrip time of 726.391897 ms, he saw 685.742454 ms
[ 10:38:33 ]:  I saw an average roundtrip time of 60.251207 ms, he saw 57.974503 ms
[ 10:38:42 ]:  I saw an average roundtrip time of 1133.909392 ms, he saw 1124.404501 ms     

সুতরাং এটি বিক্ষিপ্ত এবং তরঙ্গ যায়। আমার ধারণা, আমার প্যাকেট প্রেরণের হার হ্রাস করার মতো অন্যান্য পোস্টগুলিতে আমার কিছু পরামর্শ চেষ্টা করতে হবে।

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