All But Reality

Imagine a catchphrase here

Simple template. Background and Customization by Shihab Elagib. Powered by Blogger

November 08, 2015

نص دستة هارديسكات

أتدري ما هو السبب الذي يجعلني افضل استخدام حاسب مكتبي عوضاً عن اخر محمول؟
في الحقيقة هي عدة اسباب، غالبها يمكن تعميمه في اني احب تدليل نفسي بأداء الوظائف الحوسبية المختلفة على عتاد ذو قدرة حوسبية تفوق ضعف (أو عشرات اضعاف) المتاح في غيرها من المنصات. هنالك لكن خاصية رئيسية تجعلني كثيراً ما اؤجل عملاْ ما حتى اعود الى المنزل واقوم بإنجازه على حاسبي الشخصي: سماحية تعدد وسائط التخزين الموصلة به!



وان كانت التكنولوجيا قد تقدمت كثيراً منذ اصبحت الأقراص الصلبة (Hard Disk Drives, HDD) وسيط التخزين الدائم الرئيس للحواسيب، الا ان هذه التقنية لا تزال الأكثر شيوعاً في الحواسيب الشخصية -المحمولة والمكتبية- ذات التكلفة الرخيصة والمتوسطة. فعلى الرغم من تفاهة اداءها (والى حد ما) اعتماديتها مقابل المحركات المبنية على تكنولوجيا الـNAND (او الفلاش ميموري) كأقراص الحالة الساكنة (Solid State Drives, SSD) الا انها لا تزال ارخص سعراً واعلى سعة، خاصيتان يمكن تسويقهما بسهولة كبيرة لمستهلك لا يعلم مواصفتين غيرهما.
بطء الأقراص الصلبة -ولنعلله حالياً لأمرين: بطء زمن الاستجابة (Latency والـAccess time) و قلة معدل نقل البيانات (Bandwidth)- احد اكبر مسببات تردي سرعة استجابة الجهاز ككل، بل يمكن القول انها كثيراً ما تكون المسبب الأكبر. فأي مهمة محلية (اي ان البيانات المتعلقة بهذه المهمة مخزنة اصلاً على القرص الصلب) على الحاسوب القيام بها يجب ان تقرأ تلك البيانات من وسيط التخزين وتنقل الى الذاكرة الرئيسية (الـRAM) ومن ثم تتم معالجتها. ذواكر الفلاش تمتلك سرعة استجابة عالية جداً، الأقراص الصلبة سرعة استجابتها أبطأ من الرام بمليون مرة (استجابة الرام تقاس بالنانوثانية، بينما استجابة الأقراص الصلبة تقاس بالمليثانية). فرق الباندويدث قد يكون اقل درامية لكنه ليس بأقل تأثير، الرام تتواصل بمعدلات تحسب بعشرات (او مئات) القيقابايتات في الثانية، اما الأقراص الصلبة في احسن صورها بإمكانها الوصول لأرقام فوق المائة ميقابايت في الثانية بقليل.

آلية عمل الأقراص الصلبة تجعل من المستحيل القيام بوظيفتين في ان واحد، لذا فإن المهام التي على القرص القيام بها دائماً ما تأخذ شكل صف طويل من عمليات القراءة والكتابة التي تتم تباعاً، في كثير من الاحيان بإمكان القرص الانتهاء من هذا الصف بدون ان يدرك المستخدم حدوث أي تأخير في العمل، لكن في الكثير الأخر ستجد القرص يعاني للقيام بوظيفته. خصوصاً لو طلب منه قراءة او كتابة العديد من الملفات الصغيرة في اماكن متفرقة من القرص.

 انظمة التشغيل الحديثة، ولنأخذ انظمة الويندوز كمثال، تقوم بالعديد من المهام الخلفية (غير ظاهرة بالنسبة للمستخدم) التي تجهد القرص في العمل. كأمثلة اذكر خاصتي الـSearch Indexing و الـSuperfetch. الأولى تعني بعنونة محتويات القرص لتسريع عملية البحث بينها، والثانية تقوم بنقل الملفات كثير الاستخدام من القرص الصلب الى الذاكرة الرئيسية لتسريع تشغيلها ان احتاج المستخدم اليها. للسخرية، فإن هاتين الخاصيتين كثيراً ما تسببان تردياً كبيراً في سلاسة استخدام النظام ككل، وتحديداً خاصية الـSuperfetch. ان بحثت في الإنترنت عن ايهما ستجد الكثيرين ممن عانو من مشاكل كانا من مسببيها، واخرين ينصحون بإيقافهما تماماً. وان كنت لا املك مرجعاً موثوقاً لسبب تحولهما لمشكلة عوضاً عن اداة مساعدة، بإمكاني ان اتجرأ واحزر ان هنالك bug ما تجعلها تقومان بالعمل بكامل طاقتيهما والجهاز قيد الاستخدام، عوضاً عن العمل في حالة السكون.

اضف الى متطلبات النظام طلبات القراء والكتابة التي ترسلها البرمجيات الاخرى المثبتة عليه. برامج الحماية من الفايروسات التي تقوم بمسح كل ملف في اي فولدر قمت بفتحه، برامج التحميل وكتابة المحمل مباشرة الى القرص، المتصفحات التي تقوم بتخزين عناصر المواقع الالكترونية المفتوحة في caches وملفات مؤقتة، و العديد غيرها من bloatware وبرامج ذات فائدة لكن تحتاج تخزين ملف او قراءة بيانات بصورة متواصلة او بين الحين والأخر. اما ان قمت بمحاولة نسخ مجموعة كبيرة من الملفات صغيرة الحجم من او الى قرص صلب؟ ان لم تكن تستخدم محركاً ذو اداء عالي فمن الأفضل ان تبحث عن امر اخر تشغل به نفسك حتى تنتهي عملية النقل تلك. قراءة كمية كبيرة من الملفات صغيرة الحجم ليست فقط قاصرة على عملية "قص ولصق" عبر متصفح الملفات، بل تشمل ايضاً محاولة تشغيل البرامج الكبيرة المعقدة، فهذه العملية -فعلياً- عبارة عن نقل لملفات هذا البرنامج من وسيط التخزين الى الرام.
بالإضافة للامور الاعتيادية المذكورة اعلاه، هنالك العديد من المهام غير المنشرة التي قد تجعل القرص "يجثو على ركبتيه" حسب التعبير الانجليزي، تشغيل الجهاز كخادم ملفات بسيط احد تلك الأمور، ومحاولة القيام بتسجيل فيديو بمعدل بينات (bitrate) عالي امر اخر (كثيراً ما كنت اقوم به في الماضي).

بأخذ جميع عوامل تشغيل الحواسيب الشخصية في الاعتبار، في غالب الأمر ستجد ان "عنق الزجاجة" فيه واحد اكبر العوائق امام عملية multitasking سلسلة هو وسيط التخزين. اذاً ما الحل؟ القفز الى تكنولوجيا الحالة الصلبة؟ اي نعم من الممكن ان يقلل محرك SSD من هذا التأثير بصورة درامية، الى انه سيأتي بمشاكل اخرى مثل محدودية السعة و ربما السعر العالي (لاحظ لـربما)، وفي بعض الحالات قد لا يتمكن من حل المشكلة، اللهم الا ان كنا نتحدث عن محركات الأداء الفائق، في هذه الحالة يصبح السعر مشكلة كبيرة.
احد الحلول التي كانت تستخدم قديماً -ولا زال يستخدم الى الان، وان تحولت عناصره من اقراص صلبة لأقراص حالة ساكنة او مزيج بينهما- هو استخدام عدة اقراص موصلة على التوازي! لست اتحدث عن منظومات الـRAID، بل التعامل مع كل محرك على حدة.

حاسبي الشخصي حالياً به 6 محركات داخل الصندوق (اثنان منها غير موصلين باللوحة الأم للحفاظ عليهما)، محرك حالة صلبة واحدة و5 محركات بأقراص مغنطيسية. الأول مستخدم للنظام وبعض البرمجيات التي تحتاج لقدرات اخراج وادخال عالية، والبقية مستخدمة بصورة رئيسية للتخزين. ليس تخزيناً لما انقله اليها عبر متصفح الملفات فقط، بل غالباً ما يكون نواتج برامج اخرى تجهد وسائط التخزين في العمل. خذ مثلاً برنامج FRAPS وخاصية تسجيل الفيديو فيه. الفيديو المسجل بواسطة هذا البرنامج تتعدى معدلات البيانات فيه الـ60 ميقابايت في الثانية (‍~500ميقابت في الثانية، راجع مقال عن هارديسك ممتلئ والقفز بين صيغ الصوتيات والمرئيات)، حوالي 75% من معدل الكتابة المتوسط لأحد اقراص الـWD Caviar Green التي استخدمها! ناهيك عن كون العملية مكلفة من ناحية التأخير، حيث ان القرص سيجاهد لإيجاد وقت لكتابة اي بيان اخر اثناء قيامه بكتابة بيانات هذا الفيديو، مما يجعل القرص فعلياً غير قابل للإستخدام (بدون التضحية في سرعة كتابة الفيديو، التي بدورها تؤثر في سلاسة تشغيل اللعبة المسجلة).

خذ حالة تشغيل اخرى، ضغط وفك ضغط الملفات من والى صيغ الضغط المعروفة (Rar, 7z, etc)، كلاً من العمليتين تشملان قراءة وكتابة من وعلى وسيط التخزين في نفس الوقت، خالقة بذلك ازدحاماً على صف الأدخال والاخراج المذكور اعلاه يزداد بزيادة عدد وحجم الملفات المضغوطة، ولا تنسى ان هذا الصف ستتنافس على المقدمة فيه ايضاً وظائف النظام المختلفة وبرمجيات الخلفية او المقدمة الاخرى. ما هي ابسط طريقة لتخفيف هذا الازدحام؟ جعل كلاً من القراءة والكتابة موجهة نحو وسيط مختلف! والأفضل ان كان كل وسيط مخصصاً فقط لهذه العملية، اي ان كلاً من الوسيطين ليسا مرتبطين بأي برنامج اخر.
في حالتي لكن كثيراً ما اقوم بضغط وفك هذه الملفات في نفس القرص. اي نعم سيكون الضغط على القرص اكبر والاداء الكلي اقل، لكني -في تلك اللحظة- لا اكون محتاجاً لذلك القرص لغرض اخر، فالنظام وباقي البرمجيات تعمل في وسيط مختلف تماماً، لذا لن احس بأي تأخر في اداء النظام. مع ملاحظة ان تأثير العملية على الرام والمعالج في حالتي هامشي، وحالتي ليست بالضرورة منطبقة على كل المنظومات الأخرى (وان كان يفترض ان تنطبق على اي جهاز من الست اعوام الاواخر).

ما يجعل تعدد محركات الاقراص الداخلية خياراً جذاباً هو الدعم الكبير المتوفر بالفعل في غالبية -ان لم يكن كل- الأجهزة المكتبية. فتقريباً جميع الاقراص المتوفرة في العقد الاخير تأتي بواجهة التوصيل القياسية SATA، وغالبية اللوحات الام المتوفرة منذ 2009 تأتي بـ4 الى 6 (او اكثر) مآخذ SATA (مع الاخذ في الاعتبار ان لوحات الأجهزة صغيرة الحجم قد تأتي بسماحية اقل). مزودات الطاقة لا تتبع مقياساً ثابتاً لعدد التوصيلات، لكن قلما تجد مزوداً يأتي بتوصيلات طاقة للساتا اقل من سعة اللوحة الأم، وان وجد فيمكن ببساط استخدام محولات للتحويل من توصيلات اخرى (كتوصيلة الـmolex المستخدمة للمراوح ومحركات الPATA القديمة). اما السوفتوير فليس بأقل سهولة من الهاردوير، الويندوز يمكنه التعامل مع حتى 26 محركاً بصورة مباشرة (اوتوماتيكياً بإعطاء كل محرك جديد حرفاً تعريفياً. لكن بإمكانه التعامل مع اكثر من ذلك عبر طرق اخرى)، ونظام تصفح الملفات المتفرع التقليدي للويندوز يجعل الصعوبة الوحيدة في العملية هي قدرة المستخدم على تنظيم المساحة الجديدة المتاحة!

بالطبع، مثل هذه المنظومات لا تأتي دون مساوئ وسلبيات، في مقدمة تلك السلبيات يأتي السعر مقارنة بوسيط واحد (سعته مجموع سعة المحركات المستخدمة في المنظومة)، هنا تظهر الحجة المستخدمة عند تعليل التكلفة العالية للـSSDs مقابل الاقراص المغنطيسية: السعر العالي يعلله الاداء والفائدة الاضافية للتخزين المتوازي.
الجانب السلبي الثاني هو الاعتمادية. اذا كانت احتماليات حدوث عطل في محرك منفرد واحداً من الف، ما هي احتماليات حدوث عطل محرك (أو اكثر) في منظومة بها اثنين او ثلاث محركات؟ هذا الامر يضخم ايضاً عند الاخذ في الاعتبار سيناريوهات التشغيل على المدى الطويل. لاحظ ان المحركات الثانوية ستظل اقراصها تدور (ما لم تفعل خواص معينة في النظام) حتى ولو لم يكن هنالك عمليات ادخال واخراج جارية عليها، اي ان العمر الافتراضي لهذه الاقراص في تناقص دون ان تكون مستخدمة!
الحل المقترح في هذه الحالة هو تفعيل خواص حفظ طاقة معينة في الانظمة، وتحديداً تلك التي تعني بإيقاف دوران القرص الصلب نفسه بعد مضي مدة معينة على المحرك دون ان يُستخدم (Spinning down timers). نظرياً هذه الخاصية ستفيد في اطالة عمل المحرك، عملياً الامر اكثر تعقيداً. السبب هو ان عملية ايقاف واعادة تشغيل (Spinning up) القرص تهلك من مكوناته بصورة اكبر من في حالة ترك يعمل بصورة مستمرة، تكرار العملية بصورة مترددة يزيد من الطين بلة. لذا فإن اتباع مثل هذه السياسة يحتاج متابعة ودراسة لنمط استخدام القرص. فمثلا، المحركات الثانوية التي تستخدم بصورة عشوائية (اي ان فترات الاستخدام قد تكون متقاربة في بعض الاحيان) سيصبح الخيار الأقل ضرراً هو تركه يعمل بدون ايقاف. ولكن كما اشرت اعلاه، هذا يعني ان المنظومة الكلية لا تزال احتمال فشلها اكبر من احتمال فشل منظومة بمحرك واحد.
للتوضيح فقط، الاعتمادية الأقل ليست معممة على جميع المنظومات متعددة المحركات، لا ننسى منظومات متخصصة مثل الـRAID1 وتفرعاتها التي صممت اصلاً لمضاعفة الاعتمادية.


تعدد المحركات المستخدمة تكتيك مساعد على التخفيف من -او الغاء- البطء الذي يصيب النظام عند اجراء العمليات المتطلبة لقدرات الادخال والاخراج، لكن ربما اصبح الحال اليوم اقل حوجة لمثل هذه المنظومات مع التقدم الذي حدث في ساحة وسائط التخزين، فأقراص الحالة الصلبة اصبحت في متناول الغالبية -وان كانت لا تزال تأتي بسعات صغيرة نسبياً- بعدما كانت حكراً فقط على اجهزة الخوادم ومنصات العمل المتقدمة، بل وقد اصبحت تأتي بواجهات توصيل ومقاييس شكلية بمرونة اكبر في التوصيل والتأقلم كالمحركات الموصلة عبر فتحات الـPCIe وتلك التي تستخدم واجهات توصيل جديدة كواجهة الـM.2. ومع ظهور بروتوكولات كالـNVMe التي تسمح لمحركات الحالة الساكنة بالعمل بأقصي قدراتها والتخلص -نظرياً- من جميع معوقات الاداء الموجودة في الاقراص المغنطيسية، فالمستقبل يبدو اكثر اشراقاً واقل تطلباً لتعدد وسائط التخزين. لا يعني بالضرورة انه سيلغيها بالكامل، فلا تزال هنالك العديد من السيناريوهات التي سيحتاج بعض المستخدمين فيها للعبث بعدة توصيلات ومآخذ في محاولة -من المرجح ان تبؤ بالفشل- لتنظيم ما بداخل الصندوق.