سؤال

ما هو الفرق بين الكتابة المتسلسلة والكتابة العشوائية في حالة:- 1) الأنظمة القائمة على القرص 2) SSD [جهاز الفلاش] على أساس

عندما يكتب التطبيق شيئًا ما ويجب تعديل المعلومات/البيانات على القرص ، كيف نعرف ما إذا كانت كتابة متسلسلة أو كتابة عشوائية. كما لا يمكن تمييز الكتابة على أنها "متسلسلة" أو "عشوائية" . الكتابة مخزنة فقط ثم يتم تطبيقها على القرص عندما سنقوم بطرد المخزن المؤقت.

يرجى تصحيح لي إذا كنت مخطئا.

هل كانت مفيدة؟

المحلول

عندما يتحدث الناس عن تسلسلي ضد عشوائي يكتب إلى ملف ، ويقومون عمومًا بتمييز بين الكتابة دون أن يسعى إلى "تسلسل" (متسلسل ") ، مقابل نمط من السعي وراء الساحرة والكتابة والكتابة ، وما إلى ذلك (" عشوائي ").

التمييز مهم للغاية في الأنظمة التقليدية القائمة على القرص ، حيث سيستغرق كل قرص حوالي 10 مللي ثانية. كتابة البيانات بالتسلسل إلى نفس القرص يستغرق حوالي 30 مللي ثانية لكل ميغابايت. لذلك إذا قمت بكتابة 100 ميجابايت من البيانات بالتتابع على قرص ، فسيستغرق الأمر حوالي 3 ثوانٍ. ولكن إذا قمت بـ 100 كتابة عشوائية من 1 ميجابايت لكل منها ، فسيستغرق ذلك ما مجموعه 4 ثوان (3 ثوان للكتابة الفعلية ، و 10 مللي ثانية*100 == 1 ثانية لجميع السعي).

نظرًا لأن كل كتابة عشوائية تصبح أصغر ، فأنت تدفع المزيد والمزيد من عقوبة يسعى إلى القرص. في الحالة القصوى التي تقوم فيها بإجراء 100 مليون كتابة عشوائية 1-بايت ، ستظل على صافي 3 ثوانٍ لجميع عمليات الكتابة الفعلية ، لكن لديك الآن 11.57 يومًا يستحق السعي للقيام به! من الواضح أن الدرجة التي يمكن أن تؤثر بها كتاباتك متتابعة مقابل عشوائية على الوقت الذي تستغرقه لإنجاز مهمتك.

الموقف مختلف بعض الشيء عندما يتعلق الأمر بالفلاش. مع Flash ، ليس لديك رأس قرص فعلي يجب أن تتحرك. (هذا هو المكان الذي تسعى فيه 10 مللي ثانية إلى التكلفة للحصول على قرص تقليدي). ومع ذلك ، تميل أجهزة الفلاش إلى أحجام صفحات كبيرة (أصغر حجم الصفحة "النموذجي" حوالي 512 بايت وفقًا لـ ويكيبيديا, و 4K أحجام الصفحة تبدو شائعة كذلك). لذا ، إذا كنت تكتب عددًا صغيرًا من البايتات ، فلا يزال Flash يحتوي على تكاليف عامة في أنه يجب عليك قراءة صفحة كاملة ، وتعديل البايتات التي تكتبها ، ثم اكتب الصفحة بأكملها. لا أعرف الأرقام المميزة لفلاش أعلى رأسي. لكن قاعدة الإبهام هي أنه في الفلاش إذا كان كل من كتاباتك قابلة للمقارنة بشكل عام مع حجم صفحة الجهاز ، فلن ترى فرقًا كبيرًا في الأداء بين الكتابة العشوائية والتسلسل. إذا كان كل من كتابك صغيرًا مقارنة بحجم صفحة الجهاز ، فسترى بعض النفقات العامة عند إجراء كتابة عشوائية.

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top