پچ جادویی باعث شد دل رو به دریا بزنم و برم تو نخش و خلاصه شب جمعیه، شور و شعفی بر من حاصل شد که همش ناشی از کامپایل کرنل ۲.۶.۳۶ بود البت در کنار این پچ خوشگل و نازنین :)
خلاصه کلام اینکه اگه میخواین از این پچ استفاده کنید، دو راه دارید! روش اول رو وبآپدیت بهش اشاره کرده که به دلم ننشست! روش دوم هم که دل و هوش رو ازم برد براتون میگم :) باشد نثارمون کنید شب جمعهای بهترینها رو….
سورس کرنل ۲.۶.۳۶ رو میگیرید…. از حالت فشرده خارجش کنید….. حالا یه فولدر داریم به اسم linux-2.6.36 که توش یه سری خرت و پرت هست
حالا باید پچ جادویی رو بگیرید که حجمش خیلی کمه….. حالا پج رو که همچین اسمی داره Galbraith-patch.patch منتقل کنید به پوشه linux-2.6.36
از اینجا باید دست به دامن ترمینال شد …. وارد پوشه linux-2.6.36 بشید و با دستور زیر، کرنل رو وصله پینه کنید….
patch < Galbraith-patch.patch -p1
حالا میرسیم به جای ترسناک کار که همون سفارشی سازی کرنله….
برای غلبه به ترس، دست به دعا میشیم و دستور زیر رو میزنیم….
make localyesconfig
و بعد هم دستور زیر ….
make menuconfig
پچ رو اگه درست اعمال کرده باشید، باید در هنگام کانفیگ کردن چشتون به جمال Automatic process group scheduling از بخش General setup آشنا بشه….
برای سر در اوردن از بقیه بخشها، کافیه راهنمای هر بخش رو بخونید و بعد هم به این پست مراجعه کنید :)
کرنل رو کامپایل میکنیم ….
make -j4
ماژولها رو کامپیل میکنیم…
make modules
و حالا از آخر به اول… ماژولها رو با بالاترین دسترسی، سر جاشون میشونیم….
sudo make modules_install
و حالا خود کرنل رو….
sudo make install
این دستور بالایی رو که بزنید…. آخرین خطش یا یکی مونده به آخرش…. یه عدددی می بینید مث 2.6.36 …. این رو باید کپی کنید تو حافظه اگر اوبونتویی هستید…
از اینجا به بعد فقط مختص اوبونتو کاراست :) بقیه هم باید یه جوری initramfs رو بسازن و با خود کرنل جا بدن توی گراب (اپن سوزهای ها مراجعه کنن به پست هر نفر یک کرنل)
sudo update-initramfs -k 2.6.36 -c
اون عددی رو که توی حافظه داددیم، گذاشتیم توی دستور بالایی … دقیقا با ی فاصله بعد از حرف k
دستور آخر رو که بزنید، گراب کرنل جدید رو شناسایی میکنه ….
sudo update-grub
درایور انویدیا رو هم که از سایتش دانلود کردید قبلن… وارد کرنل جدید میشید… با دستور sudo sh NVI*.run درایور کارت گرافیکی رو نصب میکنید…..
رسیدیم به قسمت هیجان انگیز کار :) (برای دیدن سایز اصلی، روی عکس کلیک کنید)
همونطور که میبینید…. ۴ تا هسته پردازشگر چسبیده به صد … اونم به مدت چند دقیقه :) و من خیلی راحت فیلم اچدی (۱۰۸۰ پی) میبینم…. دنت میکنم به حدی که اسپم شناخته میشم! وبگردیم رو انجام میدم خیلی نرم و روون و از همه این اتفاقات عکس میگیرم :ی
خلاصه پچ خیلی خوبیه و خیلی خوشحالم که با کرنل در آینده یکی میشه …… (نمی دونم ۲.۶.۳۷ یا ۲.۶.۳۸)
* در صورت فعال بودن پچ، باید خروجی دستور زیر باید یک باشه…
قبلا در مورد پچ معروف BFS و تاثیر اون در افزایش کارایی سیستمهای خانگی (دسکتاب) صحبت کرده بودم.
حالا یه بابایی به اسم مایک گالبریث یه پچ (وصله) خیلی کوچولو نوشته (۲۳۳ خط) که تاثیر جادویی و عجیب و غریبی روی عملکرد سیستم می ذاره :) و به حدی خوفناکه که لینوس طی نامهای این پچ رو یه شاهکار و به اصطلاح killer feature هم دونسته!
برای اینکه از این پچ استفاده کنید، باید سورس کرنل ۲.۶.۳۷ کاندید دوم رو که همین امروز منتشر شده، دانلود و به مسیر proc/sys/kernel/sched_autogroup_enabled مراجعه کنید و مقدارش رو صفر یا یک قرار بدید.
فرق اون صفر و یک رو هم می تونید توی این دو تا فیلم زیر ببینید!
** توی این دو تا فیلم، کرنل با دستور make -j64 کامپایل میشه تا بار روی دوش پردازشگر به شدت بالا بره و وسط کامپایل، فیلم ۱۰۸۰ پی هم پخش میشه و بعد هم سایتی اسکرول میشه و بعد هم پنجرههای باز جابجا میشن :) تا اثبات بشه، همه چی نرم و روون داره صورت میگیره! با دستور make -j128 هم باز شرایط خیلی خیلی خوب گزارش شده… جز پخش فیلم که یه مقدار کند بوده :ی
* لینک مستقیم فیلم شماره یک (در صورت تنظیم با مقدار صفر، فیلم ۱۰۸۰ پی به صورت کامل توی هنگ هست و به زور چند ثانیهای پخش میکنه :ی)
* لینک مستقیم فیلم شماره دو ( در صورت تنظیم با مقدار یک، فیلم ۱۰۸۰ پی خیلی نرم و روون پخش میشه و حتی پنجرههای باز رومیشه تکون داد بدون اینکه گیر کنه )
نمیدونم چرا هی بند کردم به این کرنل! شاید چون فک می کنم خیلی راحته و خیلیا از رفتن به سمت و سوش ترس دارن!
uname -a میگیرم تا مشخصات کرنل رو بهتون نشون بدم.
Linux linux-19gz 2.6.33-ck1 #1 SMP PREEMPT Mon Mar 1 16:21:28 IRST 2010 x86_64 x86_64 x86_64 GNU/Linux
این یه خط چند تا نکته داره بهمون میگه. یکی اینکه پردازشگر ۶۴ بیتی هست و همینطور کرنل. دیگه اینکه شماره کرنل ۲.۶.۳۳ هست. اون ck1 پسوندی هست که نشون میده با یه کرنل کامپایل شده از رو سورس سر و کار نداریم. بلکه ۱۳ تا وصله برای بالا بردن راندمان کرنل بهش اعمال کردیم. دیگه اینکه در تنظیمات کرنل، SMP و PREEMPT فعال هستند.
حالا ببینیم با این کرنل دستی کامپایل شده، لینوکس چه جایگاهی بین سیستم عاملای دیگه داره.
شرایط سختافزاری در هر سه سیستم عامل برابر و یکسان بوده و هر سه سیستم عاملها ۶۴ بیتی هستند. فرکانس کاری پردازشگر هم سه گیگاهرتز بوده (توجهی به فرکانسی که برای آیمک ثبت شده نکنید!) . و اما بر اساس امتیازی که گیگ بنچ داده، اسنو لئوپارد اپل قوی ترین سیستم عامل و ویندوز سون ۶۴ بیتی با اختلاف کمی از لینوکس رتبه سوم رو به خودش اختصاص داده. لینوکس با کرنل سفارشی و دست ساز هم تونسته رتبه دوم رو به خودش اختصاص بده. اما باید ریز بشیم و ببینیم لینوکس کجاها داره نسبت به مک و یا احتمالا نسبت به ویندوز میلنگه.
برنامه گیگ بنج ۴ دسته امتیاز کلی رو برای همه سیستم عاملها در نظر می گیره. هر دسته شامل تعدادی تست می شه.
این ۴ دسته عبارتند از integer، Floating point، memory، stream . جالب اینجاست که هر کدام از سیستم عاملها در یک دسته اول شدهاند. به جز اسنو اپل که در دو دسته مقام اول رو کسب کرده است.
برنده قسمت integer سون، برنده floating point و stream اسنو و دسته memory نیز لینوکس اول شده است.
یکی از قسمتایی که لینوکس عقب افتاده مربوط به تستای فشرده سازی نوشتهها و عکس (همینطور عمل عکسش) هست. حالا این ینی چی؟ببینید شما با چی نوشته ها رو فشرده می کنید؟جواب bzip2 است. من نگاه کردم دیدم آخرین نسخه این برنامه رو سوزه داره و بنابراین مشکل نسخه قدیمی برنامه نیست. پس مشکل کار کجاست؟
من تنها جایی که مشکل رو می بینم زمان خواندن و نوشتن اطلاعات بر روی پارتیشن هست! دوستان ببینید پارتیشنهای من از نوع LVM هست و نوع آن هم ext4 هست. نمی دونم! اما یه جورایی احساس می کنم عملکرد پایین خیلی از نتایج در لینوکس همین موضوع میتونه باشه:)
شاید به همین دلیل است که لینوکس در دسته حافظه اول شده. چون دراین بخش، فایل سیستم معنایی ندارد پس بهترین راندمان را لینوکس در همین نقطه از خود نشان میدهد. اما در بقیه قسمتها که به نوعی درگیر با هارد دیسک و فایل سیستم هستیم، عملکرد نسبت به اسنو اپل پایین تر است.
نکته مهم اینکه از ۲۱ تست، لینوکس فقط در ۴ تست Blowfish، mandlebrot، Read sequential و stdlib copy اول شده و اختلاف پیروزی در stdlib copy با ویندوز و مک به حدی بالاست که میشه گفت لینوکس داره تو خیلی از قسمتا ( رو سخت افزار من) ضعیف عمل می کنه وفقط به دلیل خوب کار کردن در یک بخش، ضعف در بقیه قسمتا رو به نوعی جبران می کنه:)
به نتایج که نگاه میکنیم، میبینیم، ویندوز تو خیلی از تستا اول هست ( ده تست از ۲۱) ! فقط چون تو چند تا تست مث blur image یا sharpen image سوتی های بدی داده، نتیجه رو حتی به لینوکس هم واگذار کرده:)
باز میگم، احتمال بالا خیلی از نتایج مربوط به این آزمایش، به خصوص آنهایی که با واحد گیگابایت در ثانیه اندازه گیری شدهاند، با عوض شدن فایل سیستم میتونه بهبود پیدا کنه.
و اما سه نکته برای کامپایل کرنل ۲.۶.۳۳ .
اول اینکه شما میتونید ۱۳ پچ اقای کولیواس را یک جا به کرنل پچ کنید. یکی از این پچها BFS است. یکی دیگه از پچهای خیلی مهم مربوط به Timer frequency از زیر مجموعه Processor type and features هست. که بعد از پچ کردن کرنل، میشه مقدارش رو از هزار هرتز هم بالاتر برد. مقدار نهایی ده هزار هست!! این فرکانس از نقاط اختلاف بر انگیز بین علما هست. یک سری میگن این عدد هر چی بالاتر باشه بهتره. یه سری میگن اگه این عدد بالا باشه، برق بیشتری مصرف می شه. پس تو لبتابا باید این عدد رو کمتر از هزار هرتز انتخاب کرد. یه سری هم میگن خیلی بزرگ انتخاب کردن این عدد میتونه منجر به ناپایداری سیستم شه:)) یکی از وصلهها باعث میشه پسوند ck به انتهای شماره کرنل اضافه شه :-D . یکی هم باعث بهبود در عملکرد preempt لینوکس خواهد شد.
برای اعمال پچ هم کافیه، پچ و سورس کرنل در یک دایرکتوری قرار داشته باشن(بعد از خارج شدن از حالت فشرده) . با اعمال دستور زیر هر ۱۳ تا پچ به کرنل وصله خواهند شد.
patch < patch-2.6.33-ck1 -p1
بعد هم به صورت عادی میشه کرنل رو کانفیگ و کامپایل کرد(اضافه کردن زمانبندی فرکانس یادتون نره) .
اما نکته مهمتر در مورد کرنل ۲.۶.۳۳ اینکه شما همه کارا رو درست انجام دادید. کار تموم شده. نوبت میرسه به نصب درایور کارت گرافیکی انویدیا.
جالبه بدونید درایور رسمی انویدیا موقع نصب به شما پیغام خطا خواهد داد. برای حل این مشکل شما باید از یک پچ استفاده کنید. این پچ رو اینبار به درایور انویدیا وصله پینه میکنیم:)) و ربطی به کرنل نداره:دی
برای اینکار بسته به درایور انویدیایی که دارید یکی از دو پچ زیر را دانلود کنید.
بعد از اینکه مطمئن شدید که پچ و درایور رسمی انویدیا در یک دایرکتوری قرار دارند، با یکی از دو دستور زیر (بسته به نسخه درایور) پچ رو اعمال کنید. توجه کنید درایور رسمی انویدیا باید مجوز اجرا شدن را نیز داشته باشد(chmod 777 NVidia.run)
که از این به بعد میشه با این درایور به صورت معمول کار کرد(sudo ./NVIDIA-Linux-x86_64-195.30-pkg2-custom.run).
و اما نکته آخر اینکه آخرین نسخه از درایور رسمی انویدیا ( NVIDIA-Linux-x86_64-195.36.08-pkg2.run ) به صورت رسمی منتشر شده! اما همچنان فک نکنم بشه رو کرنل ۲.۶.۳۳ نصبش کرد و باید منتظر پچ اصلاحیش باشیم:)