توضیحات · چهار
پنج ستون در بیشتر جدولهای ما تکرار میشود. اینجا آمده که هرکدام چه چیزی را میسنجد، چرا ارزش انتشار دارد، و تقریباً مقدار خوب یا بد روی ماشینی که واقعاً خودت داری چه شکلی است.
عدد اصلی
ساعت وقتی شروع میشود که کار افزوده شود و وقتی میایستد که محتوای تمامشده روی دیسک باشد، وارسیشده و استخراجشده. نه وقتی دانلود تمام میشود، و نه وقتی برنامه میگوید کارش تمام است.
این تنها عددی است که با چیزی که تو تجربه میکنی مطابقت دارد. یک برنامه ممکن است سریع دانلود را تمام کند و بعد یک دقیقه صرف بررسی و باز کردن کند، و از جایی که تو نشستهای آن یک دقیقه بخشی از انتظار است. سنجیدن تنها دانلود به سود برنامههایی تمام میشد که کارشان را بعداً انجام میدهند، یعنی بیشترشان.
همین هم دلیل آن است که معماری ما در این جدولها غیرعادی به نظر میرسد. ما هر تکه را همانطور که میرسد وارسی میکنیم و در حالی که دانلود هنوز جریان دارد باز میکنیم، پس وقتی آخرین مقاله فرود میآید تقریباً چیزی برای انجام نمانده. برنامههای دیگر اول کل پست را روی دیسک میگذارند، بعد وارسی میکنند، بعد باز میکنند؛ سه مرحلهٔ پشت سر هم. در یک کار آسان تفاوت اندک است. در کاری بزرگ یا آسیبدیده بیشترِ نتیجه است.
آن یکی که بد خوانده میشود
بیشترین مقدار حافظهای که برنامه در هر لحظه از کار در اختیار داشت. RSS کوتاهشدهٔ resident set size است، یعنی صرفاً حافظهای که واقعاً در RAM است، نه وعدهدادهشده یا رزروشده.
بالاتر خودبهخود بدتر نیست، و پایینتر خودبهخود بهتر نیست. حافظه خرج میشود تا از چیزی گرانتر پرهیز شود، معمولاً از خواندن دوبارهٔ همان داده از دیسک. پرسش درست این است که آیا این خرج چیزی میخرد و آیا کراندار است.
کراندار واژهٔ مهم است. برنامهای که حافظهاش با اندازهٔ کار بزرگ میشود سرانجام به کاری برمیخورد که روی ماشین تو نمیتواند تمامش کند، و خرابی به شکل جابهجایی به دیسک یا فرایند کشتهشده میرسد نه پیامی مؤدبانه. ما بودجهای نگه میداریم و داخل آن میمانیم، و برای همین میتوانیم کاری 190 GB را از ماشینی بگذرانیم که حدود 1.1 GB حافظه برایمان در دسترس است. عددی مثل 9.3 GB روی کاری 190 GB فقط بزرگ نیست، شکل دیگری دارد: با کار بزرگ میشود.
جایی که حافظهٔ خودمان بالا میرود، میکوشیم بگوییم چه خریده است. در پستهای بهشدت آسیبدیده نسخهٔ کنونی دادهٔ توازن را در حافظه نگه میدارد تا فوراً ترمیم کند بهجای اینکه بعداً بیشتر بیاورد، و همین اوج حافظه را از حدود 0.8 GB به حدود 1.3 GB میبرد و حدود ده ثانیه صرفهجویی میکند. در پست آسیبندیده این خرج رخ نمیدهد و عدد 0.24 GB است.
نمایندهٔ مصرف انرژی
کل زمان پردازندهای که تمام برنامه مصرف کرده، جمعشده روی همهٔ هستهها. سنجهای است از کار انجامشده نه زمان سپریشده، پس میتواند بسیار بزرگتر از ساعت باشد.
اگر کاری 100 ثانیه طول بکشد و 1,600 ثانیهٔ پردازنده گزارش دهد، تقریباً شانزده هسته در تمام مدت اجرا مشغول بودهاند. این به سه دلیل عملی مهم است: گرماست، برق است، و روی ماشینی که همزمان کار دیگری میکند رقابت بر سر منابع است. برنامهای که در زمانی معقول تمام میشود ولی همهٔ هستهها را اشباع میکند کارآمد نبوده، گران بوده.
بزرگترین تفاوتهای کل این سایت در همین ستون پیدا میشود، بزرگتر از هر زمان پایانی. برای خروجی بایتبهبایت یکسان روی همان پست آسیبدیده، پراکندگی سیبرابری در ثانیههای پردازنده میان برنامهها اندازه گرفتهایم. پیش از آنکه فرض کنی دو برنامه که با چند ثانیه فاصله تمام میکنند مقدار کار قابلمقایسهای انجام میدهند، ارزش دارد این را وارسی کنی.
دو ستون دیسک
اوج دیسک بیشترین فضای اضافی است که کار در یک لحظه لازم داشت. ورودی/خروجی حجم مقدار کل دادهای است که برای رسیدن به آنجا خوانده و نوشته شده. این دو به پرسشهای متفاوتی پاسخ میدهند.
اوج دیسک قیدی سخت است. تعیین میکند که آیا کار اصلاً میتواند اجرا شود. بیشتر برنامهها کل پست را روی دیسک مینویسند و بعد نسخهٔ دومی را کنارش باز میکنند، پس تقریباً دو برابر محتوا فضای آزاد لازم دارند. برای کاری 190 GB این یعنی حدود 313 GB آزاد پیش از شروع، در برابر حدود 157 GB نزد ما، چون هنگام دانلود باز میکنیم و هرگز جلدهای بایگانی را روی دیسک پدید نمیآوریم. اگر دیسک تو دو برابر کار را جا ندهد، آن تفاوت درصد نیست؛ این است که دانلود انجام میشود یا نه.
ورودی/خروجی حجم فرسایش و زمان است. نوشتن پست، خواندن دوبارهٔ آن برای وارسی، خواندن دوبارهٔ آن برای باز کردن و نوشتن خروجی، چهار گذر روی داده است. انجامش در یک گذر تقریباً یکسوم ترافیک است، که روی دیسک حالتجامد یعنی طول عمر، و روی دیسکی کندتر اغلب یعنی گلوگاه واقعی بهجای شبکه.
نکتهای دربارهٔ نحوهٔ خواندن این دو، چون ما را غافلگیر کرد و ممکن است تو را هم در خواندن جدولهایمان غافلگیر کند. هر دو عدد از شمارندههایی میآید که کل دیسک را پوشش میدهند، نه یک برنامهٔ منفرد را. همین آنها را به وارسی عالیای بدل میکند برای اینکه ببینیم آیا یک سنجش با چیز دیگری که همزمان اجرا میشده آلوده شده، و یعنی عددی که ناممکن به نظر میرسد معمولاً همان است: کاری 6.5 GB که 144 GB ترافیک دیسک گزارش میدهد برنامهای با رفتار عجیب نیست، دو کار است که یک ماشین را به اشتراک گذاشتهاند.
خواندن یک جدول
خودِ جدولها، با نسخهٔ ساخت و تاریخ کنار هرکدام، در صفحهٔ محکها هستند، از جمله دورهایی که میبازیم.