سؤال لماذا يكون "/ dev / rdisk" أسرع 20 مرة من "/ dev / disk" في نظام التشغيل Mac OS X


وفقا ل rasbery بي الوثائق، يمكنك تحميل نظام التشغيل الخاص بك إلى بطاقة فلاش مع / dev / disk أو / dev / rdisk.

rdisk لتقف على القرص الخام.

/ dev / disk هو جهاز بمستوى الكتلة ، لماذا rdisk يكون أسرع 20 مرة؟ 

باستخدام ماكنتوش

ملاحظة: في OS X قد يكون لكل قرص مراجع مسارين في / dev:   / dev / disk # عبارة عن جهاز مخزَّن ، مما يعني أنه يتم إرسال أي بيانات   يخضع لمعالجة إضافية. / dev / rdisk # هو مسار خام ، وهو كثير   أسرع ، وموافق تمامًا عند استخدام برنامج dd. على فئة 4 SD   بطاقة كان الفرق حوالي 20 مرة أسرع باستخدام مسار rdisk.


115
2017-08-13 22:26


الأصل


كملاحظة جانبية ، ركضت اختبار و rdisk استغرق في الواقع وقتا أطول من ذلك بكثير. - spuder
كملاحظة جانبية أخرى ، شعرت بأن عليّ أن أختبرها أيضاً ، ووجدت أن نسخة rdisk (عبر dd) كانت أسرع 4 مرات من استخدام القرص المقابل. - Travis Griggs
TravisGriggs أنا فضولية أي نظام التشغيل ، ماك أو لينكس؟ - spuder
اعتقدت "rdisk" كان خطأ مطبعي في بعض التعليمات للحصول على صورة بطاقة SD Raspberry Pi كنت أقرأ. بناء على مزيد من التحقيق أنا googled الفرق وجدت هذا الخيط. تبين في حالتي أنه كان أسرع 13 مرة لكتابة صورة بسعة 1.7 جيجا بايت إلى بطاقة SD باستخدام / dev / rdisk بدلاً من / dev / disk! Macbook Pro Retina 13 "، model 2015 model. - tobias.mcnulty
كما sidenote آخر ، أنا فقط dd'ed صورة أوبونتو ARM إلى بطاقة سانديسك اكستريم برو MicroSD المشتراة حديثا. كتب / dev / disk1 في 2.3 ميغابايت / ثانية بينما كتب / dev / rdisk1 في 83.7 ميغا بايت / ثانية أو 36.4 مرات أسرع. - DanielSmedegaardBuus


الأجوبة:


من عند man hdiutil:

العقد / dev / rdisk هي أجهزة خاصة بالأحرف ، ولكنها "raw" في المعنى BSD و I / O محاذي لكتل ​​تجزئة. فهي أقرب إلى القرص الفعلي من ذاكرة التخزين المؤقت المخزن المؤقت. من ناحية أخرى ، فإن العقد / dev / disk ، هي عبارة عن أجهزة مخزّنة خاصة ، وتستخدم بشكل أساسي بواسطة شفرة نظام الملفات kernel.

في شروط للشخص العادي /dev/rdisk يذهب تقريبا مباشرة إلى القرص و /dev/disk يمر عبر طريق أطول تكلفة


84
2017-08-13 23:23



لماذا استخدام القرص عندما يمكنك استخدام rdisk؟ - user391339
@ user391339 لأن التخزين المؤقت لا يزال أمرًا مرغوبًا فيه. في الحالات التي يكون لديك فيها وسائط قابلة للإزالة ، ترغب في الحصول على البيانات على الجهاز الفعلي في أسرع وقت ممكن ، لأنك تريد البيانات في موقع فعلي آخر. محركات الأقراص الصلبة الداخلية هي قصة مختلفة. أنت عادة لا تحملها ، لذا لا تهتم عندما تتم كتابة البيانات بالفعل على الجهاز. عند تخزين البيانات المكتوبة / القراءة من الأجهزة التي تعد طريقة أكثر تكلفة للكتابة على القرص ، ولكن برامجك لا تزال أسرع ، حيث لا تحتاج إلى الانتظار حتى تتم كتابة كافة البيانات التي تريد كتابتها إلى القرص. - Kritzefitz
Dan، Re "force"؛ المعنى؟ - Pacerier


الإجابة المقبولة صحيحة ، ولكنها لا تدخل في الكثير من التفاصيل.

واحدة من الاختلافات الرئيسية بين /dev/disk و /dev/rdisk، عند الوصول إليها من مساحة المستخدم ، هو ذلك /dev/disk مخزّنة. مسار القراءة / الكتابة لـ /dev/disk يكسر I / O إلى قطع 4KB ، والذي يقرأ في ذاكرة التخزين المؤقت ، ومن ثم نسخ في المخزن المؤقت مساحة المستخدم (ومن ثم يصدر قراءة 4KB القادمة ...). هذا لطيف في أنه يمكنك القيام بقراءة والكتابة غير المصححة ، وأنها تعمل فقط. في المقابل، /dev/rdisk في الأساس فقط يمر القراءة أو الكتابة مباشرة إلى الجهاز ، مما يعني أن بداية ونهاية I / O تحتاج إلى أن تكون محاذاة على حدود القطاع.

إذا قمت بقراءة أو كتابة أكبر من قطاع واحد /dev/rdisk، سيتم تمرير هذا الطلب من خلال مباشرة. قد تقوم الطبقات السفلى بتكسيرها (على سبيل المثال ، يقوم USB بتفكيكها إلى قطع 128KB بسبب الحد الأقصى لحجم الحمولة في بروتوكول USB) ، ولكن يمكنك بشكل عام الحصول على I / Os أكبر وأكثر فعالية. عند البث ، مثل عبر dd، ومن 128KB إلى 1MB هي أحجام جيدة للحصول على الأداء القريب من الأمثل على الأجهزة الحالية غير RAID.

التخزين المؤقت الذي تقوم به /dev/diskمسارات القراءة والكتابة بسيطة جدًا وموت دماغي تقريبًا. تخزين مؤقت حتى ولو لم يكن ضروريًا تمامًا؛ مثل ما إذا كان الجهاز يمكنه وضع خريطة للذاكرة ونقلها مباشرةً إلى المخزن المؤقت لتطبيقك. فإنه يفعل صغير (4KB) I / Os ، الأمر الذي يؤدي إلى الكثير من النفقات العامة لكل I / O. لا يفعل أي قراءة في الأمام أو الكتابة وراء.


90
2018-03-23 04:54



شكرا جزيلا على شرح في التفاصيل. - gpanda


يبدو /dev/disk و /dev/rdisk يعمل بشكل مختلف عن محركات الأقراص الصلبة ومحركات أقراص الحالة الصلبة. اريد التحقق من ذلك لبطاقة MicroSD. فقط كتبت صورة قرص 2GB إلى Sandisk Ultra MicroSD 64GB (https://www.amazon.com/gp/product/B073JYVKNX).

الاختبارات المتكررة عدة مرات ، لكن النتائج كانت مستقرة: 17MB / ث إلى عن على /dev/disk ضد 20MB / ث إلى عن على /dev/rdisk. متغير bs=1m إلى bs=16m يعطي على الاطلاق أي اختلاف في سرعة الكتابة.

  1. الكتابة ل /dev/disk2

    sudo dd if=~/Downloads/ubuntu-18.04-4.14-minimal-odroid-xu4-20180531.img of=/dev/disk2 bs=1m
    2094006272 bytes transferred in 121.860007 secs (17183704 bytes/sec)
    
  2. الكتابة ل /dev/rdisk2

    $ sudo dd if=~/Downloads/ubuntu-18.04-4.14-minimal-odroid-xu4-20180531.img of=/dev/rdisk2 bs=1m
    2094006272 bytes transferred in 102.743870 secs (20380839 bytes/sec)
    

ثم قررت اختبار سرعة القراءة: 26MB / ث إلى عن على /dev/disk ضد 87MB / ث إلى عن على /dev/rdisk. متغير bs=1m إلى bs=16m يعطي أي فرق على الإطلاق في سرعة القراءة.

  1. القراءة من /dev/disk2

    sudo dd if=/dev/disk2 of=~/Downloads/ubuntu-18.04-4.14-minimal-odroid-xu4-20180531-2.img bs=1m
    257949696 bytes transferred in 9.895572 secs (26067184 bytes/sec)
    
  2. القراءة من /dev/rdisk2

    $ sudo dd if=/dev/rdisk2 of=~/Downloads/ubuntu-18.04-4.14-minimal-odroid-xu4-20180531.img bs=1m
    877658112 bytes transferred in 10.021974 secs (87573377 bytes/sec)
    

2
2017-08-04 06:56





للسجل ، في MacOS High Sierra على الأقل ، يبدو أن / dev / disk أسرع بكثير من / dev / rdisk. باستخدام إما dd أو ddrescue ، فإن نسخ المقارنة الإنتاجية من HD المغناطيسي إلى SSD كانت 3.7 ميغابايت في الثانية باستخدام / dev / rdisk ، و 45 ميغابت في الثانية باستخدام / dev / disk. لذلك ، في الإصدارات الأحدث من نظام MacOS ، قد يكون من الأفضل استخدام / dev / disk بدلاً من / dev / rdisk للحصول على أفضل أداء.


1
2018-01-14 18:07



أثناء كتابة صورة ذات امتداد رباعي ثقوب بسعة 4.6 جيجا بايت من وحدة تخزين SSD الداخلية إلى بطاقة SD مع dd و bs من 1 ميغابايت / dev / rdisk ما زالت تعمل بشكل أسرع من / dev / disk على جهاز macbook pro macintosh 10.13.2. استغرق الأمر 27.16 دقيقة باستخدام / dev / disk و 5.18 دقيقة فقط باستخدام / dev / rdisk. - digitaladdictions
جعلتdigitaladdictions فقط بعض الاختبارات على أحدث نظام التشغيل MacOS: superuser.com/a/1346063/126537 - k06a