فراریها و تریلرهای کامیون
در دنیای SMB، در واقع نادر است که نیاز باشد درباره لیتنسی صحبت کنیم. دنیای SMB تقریباً به طور جهانی بر توان عملیاتی سیستم متمرکز است و عموماً از لیتنسی به عنوان یک نیاز بیاطلاع است. اما مواقعی هست که لیتنسی مهم میشود و در آن مواقع حیاتی است که تعامل توان عملیاتی و لیتنسی و اینکه “سرعت” برای ما چه معنایی دارد را بفهمیم. به محض اینکه شروع به ورود به فضای سازمانی میکنیم، لیتنسی بیشتر اوقات به عنوان یک نگرانی مطرح میشود، اما حتی در آنجا توان عملیاتی تقریباً همیشه برتری دارد، تا آنجا که مفاهیم سرعت تقریباً به طور جهانی حول توان عملیاتی میچرخند و مفاهیم لیتنسی اغلب نادیده گرفته یا فراموش میشوند.
درک نقش لیتنسی در یک سیستم میتواند پیچیده باشد، حتی اگر خود لیتنسی نسبتاً ساده باشد.
مقایسه عالی بین لیتنسی و توان عملیاتی که دوست دارم استفاده کنم ایده یک فراری و یک تریلر کامیون است. فراریها در مفهوم سنتی «تند» هستند، آنها «مایل در ساعت» بالایی دارند. ممکن است بگوییم که برای سرعت طراحی شدهاند. اما آیا واقعاً؟
ما معمولاً تریلرهای کامیون را کند در نظر میگیریم. آنها موجوداتی بزرگ و کند هستند که سرعت اوج پایینی دارند. اما آنها چیزهای زیادی را یکجا حمل میکنند.
در اصطلاح کامپیوتری معمولاً سرعت را مانند ظرفیت حمل فکر میکنیم – در اصطلاح «آیتم» در ثانیه فکر میکنیم. در اصطلاح یک فراری که با دویست مایل در ساعت میرود عالی است، اما میتواند شاید یک جعبه در یک بار حمل کند. یک تریلر کامیون فقط میتواند با صد مایل در ساعت برود اما میتواند نزدیک به هزار جعبه در یک بار حمل کند. وقتی درباره توان عملیاتی یا سرعت در یک کامپیوتر صحبت میکنیم این بیشتر چیزی است که به آن فکر میکنیم. در اصطلاح شبکه به گیگابایت در ثانیه فکر میکنیم و به ندرت نگران سرعت یک پکت منفرد هستیم زیرا یک پکت منفرد به ندرت مهم است. در اصطلاح محاسباتی به ایدههایی مانند عملیات ممیز شناور در ثانیه فکر میکنیم، یک مفهوم مشابه. هیچکس واقعاً نگران مدت زمان یک FLOP (عملیات ممیز شناور) نیست، فقط اینکه چند تا میتوانیم در یک یا ده ثانیه انجام دهیم.
پس وقتی به یک فراری نگاه میکنیم میتوانستیم بگوییم که سرعت مفید آن دویست جعبه-مایل در ساعت است. یعنی برای هر ساعت عملیات، یک فراری میتواند یک جعبه را تا دویست مایل جابجا کند. یک تریلر کامیون سرعت مفید صد هزار جعبه-مایل در ساعت دارد. از نظر جابجایی بستهها، توان عملیاتی تریلر کامیون به راحتی پانصد برابر «سریعتر» از فراری است.
پس از نظر اینکه معمولاً چطور به کامپیوترها و شبکهها فکر میکنیم، تریلر کامیون «سریع» و فراری «کند» خواهد بود.
اما لیتنسی هم هست که باید در نظر گرفت. با فرض اینکه بار ما کوچک باشد، مثلاً یک نامه یا یک جعبه کوچک، یک فراری میتواند آن یک جعبه را در طول هزار مایل تنها در پنج ساعت جابجا کند! یک تریلر کامیون ده ساعت طول میکشد تا این سفر یکسان را طی کند (اما میتوانست تعداد زیادی نامه را یکجا تحویل دهد). اگر آنچه نیاز داریم این است که یک پیام یا یک بسته کوچک را به سرعت از یک جا به جای دیگر برسانیم، فراری انتخاب بهتری است زیرا از لحظهای که تحویل را شروع میکنیم تا تحویل اولین بسته، نصف لیتنسی (تأخیر) تریلر کامیون را دارد.
همانطور که میتوانید تصور کنید، در بیشتر موارد تریلرهای کامیون به طرز وسیعی عملیتر هستند چون سرعت تحویلشان بسیار بالاتر است. و در این صورت، واقعاً کامیونهای بزرگی را تمام مواقع در بزرگراهها میبینیم و نرخ رخداد فراریها بسیار پایین است – حتی اگر هر کدام تقریباً به همان قیمت خریداری شوند (به طور تقریبی). اما در موارد خاص، فراری منطقیتر است. فقط خیلی کم.
این یک مفهوم کلی است و میتواند برای کاربردهای متعدد اعمال شود. برای سیستمهای کَش، حافظه، CPU، شبکه، هستههای سیستمعامل و زمانبند، برای ماشینها و بیشتر اعمال میشود. لیتنسی و توان عملیاتی به طور کلی رابطه معکوس دارند – برای به دست آوردن توان عملیاتی از لیتنسی چشمپوشی میکنیم. برای اکثر عملیاتها این بهترین منطق را دارد. اما گاهی منطقیتر است که برای لیتنسی تنظیم کنیم.
ذخیرهسازی در واقع در محاسبات یک استثنا است جایی که تقریباً تمام تمرکز بر روی عملکرد ذخیرهسازی حول IOPS است که تقریباً یک معیار جایگزین برای لیتنسی است، نه توان عملیاتی که در «داده انتقالیافته در ثانیه» اندازهگیری میشود. به ندرت نگران این عدد دوم هستیم چون تقریباً هرگز منبع گلوگاههای ذخیرهسازی نیست. اما این استثنا است، نه قانون.
لیتنسی و توان عملیاتی میتوانند تعاملات شگفتانگیزی در دنیای محاسباتی داشته باشند. وقتی مثلاً درباره شبکهها صحبت میکنیم، معمولاً فقط توان عملیاتی (Gb/s) را اندازه میگیریم اما به ندرت زیاد نگران لیتنسی (معمولاً در میلیثانیه اندازهگیری میشود) هستیم. معمولاً این به خاطر این است که تقریباً همه سیستمهای شبکه اعداد لیتنسی مشابه دارند و اکثر برنامهها کاملاً بیتفاوت به تأخیرهای لیتنسی هستند. فقط برنامه نادری مانند VoIP روی لینکهای بینالمللی یا ماهواره است که لیتنسی بر شخص متوسط تأثیر میگذارد یا گاهی میتواند مردم را غافلگیر کند وقتی چیزی غیررایجی مثل iSCSI روی یک اتصال WAN فاصله طولانی امتحان میکنند و ناگهان لیتنسی به عنوان یک مشکل پیشبینینشده ظاهر میشود.
یکی از جاهایی که تعامل لیتنسی و توان عملیاتی شروع به شگفتانگیز و جالب بودن میکند وقتی است که از شبکههای داده الکتریکی یا نوری به شبکههای فیزیکی میرویم. یک نقل قول مشهور در این صنعت این است:
هرگز پهنای باند یک استیشن واگن پر از نوار که با سرعت روی بزرگراه میرود را دست کم نگیرید.
این نمایش عالی از پهنای باند عظیم با لیتنسی بسیار بالاست. رانندگی پنجاه مایل آن سوی شهر یک استیشن واگن یا SUV واحد میتوانست صدها پتابایت داده را حمل کند که نرخهای دادهای که فیبر ۱۰ گیگابیت بر ثانیه نمیتوانست به آنها نزدیک شود. اما زمان رسیدن اولین پکت داده حدود یک ساعت است. اغلب این نوع شبکه را نادیده میگیریم چون فرض میکنیم که لیتنسی باید زیر حدود ۵۰۰ میلیثانیه محدود شود. اما این همیشه صادق نیست.
Australia اخیراً در اخبار جایی بود که آزمایشی انجام دادند تا ببینند آیا یک کبوتر حامل کارت SD میتواند از نظر توان عملیاتی شبکه، از ISP منطقه بهتر عمل کند – و کبوتر از ISP سریعتر بود!
از نظر عملکرد محاسباتی، اغلب لیتنسی را تا آنجا نادیده میگیریم که حتی از آن به عنوان زمینهای برای بحث عملکرد آگاه نیستیم. اما در دوایر محاسباتی با لیتنسی پایین با دقت زیادی در نظر گرفته میشود. توان عملیاتی سیستم به طور کلی به شدت کاهش مییابد (رایج میشود که سیستمها را فقط ده درصد استفاده از CPU هدف قرار دهیم در حالی که سیستمهای سنتیتر نزدیک به نود درصد هدف دارند) با مفاهیمی مانند هستههای بلادرنگ، وابستگی CPU، پین کردن پردازنده، نرخهای برخورد کَش و کاهش اندازهگیری که همه برای تمرکز بر به دست آوردن فوریترین پاسخ ممکن از یک سیستم به جای تلاش برای به دست آوردن بیشترین پردازش کل از یک سیستم استفاده میشوند.
جاهای رایجی که لیتنسی پایین از منظر محاسباتی مطلوب است در سیستمهای کنترلکننده حیاتی (مانند کنترلکنندههای تولیدی که حتی یک میلیثانیه لیتنسی میتواند مشکلاتی در کف کارخانه ایجاد کند) یا در سیستمهای معاملاتی مالی است که چند میلیثانیه تأخیر میتواند باعث شود سرمایهگذاریها در قیمت تغییر کرده باشند یا محصولات قبلاً فروخته شده باشند و دیگر در دسترس نباشند. سرعت، از نظر لیتنسی، اغلب عامل تعیینکننده بین کسب درآمد یا از دست دادن پول است – حتی یک میلیثانیه میتواند ویرانکننده باشد.
از نظر فنی حتی سیستمهای پردازش صدا و ویدیو باید به لیتنسی حساس باشند اما اکثر سیستمهای محاسباتی مدرن آنقدر پردازش اضافی دارند و لیتنسی به طور کلی آنقدر پایین است که اکثر سیستمها، حتی PBX VoIP و سیستمهای کنفرانس، امروزه میتوانند بدون نیاز زیاد به آگاهی از نگرانیهای لیتنسی در طرف پردازش کار کنند (حتی لیتنسی شبکهسازی هم به عنوان نگرانی کمتر و کمتر رایج میشود). مدیر سیستم یا مهندس متوسط ممکن است به راحتی در طول یک شغل بدون نیاز به کار روی سیستمی که به لیتنسی حساس است یا برای آن آنقدر ظرفیت اضافی موجود نباشد که هر حساسیت لیتنسی را پنهان کند، عبور کند.
تعریف سرعت، چه به معنای توان عملیاتی، لیتنسی یا حتی چیز دیگری یا ترکیبی از این دو، در تمام جنبههای IT و در زندگی چیز بسیار مهمی است. درک اینکه چطور در موقعیتهای مختلف بر ما تأثیر میگذارند و چطور به هم واکنش نشان میدهند با اینکه عموماً در یک رابطه غیرمستقیم وجود دارند که در آن بهبودهای توان عملیاتی با هزینهای برای لیتنسی یا بالعکس همراه هستند و یادگیری تعادل بین آنها بر اساس نیاز برای بهبود سیستمهایی که روی آنها کار میکنیم بسیار ارزشمند است.