چرا کمترین پینگ اغلب کندترین سرور است
پینگ فقط اولین پرش را میسنجد. چیزی درباره اینکه گیتوی هنوز به اینترنت میرسد یا چقدر میتواند رد کند نمیگوید. بهجایش چه چیزی را باید سنجید.
هر فهرست سروری بر اساس پینگ مرتب میشود، و پینگ ضعیفترین نشانه روی آن صفحه است.
پینگ یک رفت و برگشت تا در ورودی گیتوی است. میگوید ماشین بالاست و چقدر دور است. نمیگوید که آن ماشین هنوز به اینترنت پشت سرش میرسد یا نه، که مسیر بالادستش اشباع است یا نه، و اینکه مسیری که ترافیک تو را حمل میکند شکلدهی میشود یا نه.
سه عدد متفاوت
- تأخیر یعنی یک رفت و برگشت چقدر طول میکشد. این تعیین میکند صفحه موقع باز شدن چه حسی دارد، چون باز شدن یک صفحه دهها رفت و برگشت است.
- گذردهی یعنی در هر ثانیه چقدر داده میرسد. این تعیین میکند یک دانلود چقدر طول میکشد، و تقریباً مستقل از تأخیر است.
- اتلاف یعنی چه کسری از بستهها اصلاً نمیرسند. این بیسروصدا گذردهی را نابود میکند، چون کنترل ازدحام رایج، اتلاف را به معنی «آهستهتر برو» میخواند.
یک گیتوی میتواند در بیست میلیثانیه جواب بدهد و دو مگابیت رد کند. یکی دیگر در چهارصد میلیثانیه جواب بدهد و دویست مگابیت. فهرستی که بر اساس پینگ مرتب شده، اشتباهی را اول میگذارد.
آن که واقعاً میزند، اتلاف است
روی یک مسیر طولانی بینالمللی، مقدار کمی اتلاف هزینه بسیار زیادی از سرعت میگیرد. الگوریتم پیشفرض بیشتر سرورها، یعنی CUBIC، هر بسته گمشده را نشانه شلوغی شبکه میگیرد و عقب میکشد. روی مسیری که به دلایلی غیر از شلوغی بسته میاندازد، مثل شکلدهی یا یک نقطه تبادل اشباع یا آخرین کیلومتر پر اتلاف، تمام عمرش را صرف عقب کشیدن از مشکلی میکند که عقب کشیدن حلش نمیکند.
جواب معمول BBR است. بهجای حدس زدن از روی اتلاف، پهنای باند و رفت و برگشت واقعی مسیر را مدل میکند، و روی یک خط طولانی پر اتلاف تفاوتش معمولاً چند برابر شدن گذردهی است. روی سرور یک تنظیم است:
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
ارزشش را دارد که قبل از مقصر دانستن گیتوی انجام شود.
کلاینت باید چه چیزی را بسنجد
اندازهگیری صادقانه یک درخواست واقعی از داخل تونل است، با زمانسنجی. یک رفت و برگشت هزینه دارد و تنها چیزی است که هر سه عدد را با هم نشان میدهد: گیتویای که بالادستش مرده در آن یکسره رد میشود، و گیتویای که مسیرش شکلدهی شده بهوضوح کندتر از چیزی است که پینگش نشان میداد.
رتبهبندی بر همین اساس، و نگه داشتن آنچه یاد گرفته شده بین اجراها، فهرستی به تو میدهد که بالاترین گزینهاش معمولاً همان درست است. رتبهبندی بر اساس پینگ فهرستی میدهد که مرتب است، و آن یک چیز دیگر است.