Apa yang salah dengan kecepatan saya di 4K? Mengapa ini sangat lambat? Atau mestinya seperti itu?
Apakah kecepatan itu oke? Mengapa saya memiliki kecepatan rendah di 4K?
hard-drive
hardware-failure
storage
speed
benchmarking
User6539
sumber
sumber
Jawaban:
Apa yang Anda hadapi adalah khas HDD mekanis, dan salah satu manfaat utama SSD: HDD memiliki kinerja akses acak yang mengerikan .
Dalam CrystalDiskMark, "Seq" berarti akses berurutan sementara "4K" berarti akses acak (dalam potongan 4kB sekaligus, karena byte tunggal akan terlalu lambat dan tidak realistis 1 ).
Definisi
Secara umum, ada dua cara berbeda untuk mengakses file.
Akses berurutan
Akses berurutan berarti Anda membaca atau menulis file kurang lebih satu byte demi satu. Misalnya, jika Anda menonton video, Anda akan memuat video dari awal hingga akhir. Jika Anda mengunduh file, itu akan diunduh dan ditulis ke disk dari awal hingga akhir.
Dari perspektif disk, ia melihat perintah seperti "baca blok # 1, baca blok # 2, baca blok # 3, baca blok byte # 4" 1 .
Akses acak
Akses acak berarti tidak ada pola yang jelas untuk membaca atau menulis. Ini tidak harus berarti benar-benar acak; itu benar-benar berarti "tidak berurutan". Misalnya, jika Anda memulai banyak program sekaligus, mereka harus membaca banyak file yang tersebar di drive Anda.
Dari perspektif drive, ia melihat perintah seperti "baca blok # 56, baca blok # 5463, baca blok # 14, baca blok # 5"
Blok
Saya telah menyebutkan blok beberapa kali. Karena komputer berurusan dengan ukuran besar (1 MB ~ = 1000000 B), bahkan akses berurutan tidak efisien jika Anda harus meminta drive untuk setiap byte individual - terlalu banyak obrolan. Dalam praktiknya, sistem operasi meminta blok data dari disk pada suatu waktu.
Sebuah blok hanya berbagai bytes; misalnya, blok # 1 mungkin byte # 1- # 512, blok # 2 mungkin byte # 513- # 1024, dll. Blok-blok ini berukuran 512 Bytes atau 4096 Bytes, tergantung pada drive. Tetapi bahkan setelah berurusan dengan blok daripada byte individu, akses blok sekuensial lebih cepat daripada akses blok acak.
Performa
Sekuensial
Akses berurutan umumnya lebih cepat daripada akses acak. Ini karena akses berurutan memungkinkan sistem operasi dan drive memprediksi apa yang akan dibutuhkan selanjutnya, dan memuat potongan besar sebelumnya. Jika Anda telah meminta blok "1, 2, 3, 4", OS dapat menebak Anda akan menginginkan "5, 6, 7, 8" selanjutnya, jadi ia memberitahu drive untuk membaca "1, 2, 3, 4 , 5, 6, 7, 8 "dalam sekali jalan. Demikian pula, drive dapat membaca penyimpanan fisik dalam sekali jalan, daripada "mencari ke 1, membaca 1,2,3,4, mencari ke 5, membaca 5,6,7,8".
Oh, saya sebutkan mencari sesuatu. HDD mekanis memiliki waktu mencari yang sangat lambat karena cara penataannya secara fisik: terdiri dari sejumlah disk yang terbuat dari logam yang berputar, dengan lengan fisik bergerak maju dan mundur untuk membaca disk. Ini adalah video HDD terbuka tempat Anda dapat melihat disk yang berputar dan lengan yang bergerak.
Gambar dari http://www.realtechs.net/data%20recovery/process2.html
Ini berarti bahwa pada suatu waktu, hanya sedikit data di bawah kepala di ujung lengan yang dapat dibaca. Drive perlu menunggu dua hal: perlu menunggu lengan untuk bergerak ke ring kanan ("track") disk, dan juga perlu menunggu disk berputar sehingga data yang dibutuhkan berada di bawah bacaan kepala. Ini dikenal sebagai pencarian 2 . Baik putaran dan lengan yang bergerak membutuhkan waktu fisik untuk bergerak, dan mereka tidak dapat dipercepat oleh banyak tanpa risiko kerusakan.
Ini biasanya membutuhkan waktu yang sangat lama, jauh lebih lama dari pembacaan yang sebenarnya. Kita berbicara> 5ms hanya untuk sampai ke tempat byte yang diminta tinggal, sedangkan pembacaan aktual dari byte rata-rata sekitar 0,00000625ms per byte byte sekuensial dibaca (atau 0,003125ms per 512 B blok).
Acak
Akses acak, di sisi lain, tidak memiliki manfaat dapat diprediksi. Jadi, jika Anda ingin membaca 8 byte acak, mungkin dari blok "8,34,76,996,112,644,888,341", drive harus "mencari ke 8, membaca 8, mencari to34, membaca 34, mencari to76, membaca 76, ..." . Perhatikan bagaimana perlu mencari lagi untuk setiap blok? Alih-alih rata-rata 0,003125ms per blok 512 B berurutan, sekarang rata-rata (5ms mencari + 0,003125ms dibaca) = 5,003125ms per blok. Itu banyak, berkali- kali lebih lambat. Ribuan kali lebih lambat, sebenarnya.
SSD
Untungnya, kami punya solusinya sekarang: SSD.
SSD, solid state drive , adalah, seperti namanya, solid state . Itu berarti tidak memiliki bagian yang bergerak . Terlebih lagi, cara SSD diletakkan berarti ada (secara efektif 3 ) tidak perlu mencari lokasi byte; sudah tahu . Itu sebabnya SSD memiliki jauh lebih sedikit kesenjangan kinerja antara akses berurutan dan acak.
Masih ada celah, tetapi itu sebagian besar disebabkan karena tidak dapat memprediksi apa yang akan terjadi selanjutnya dan melakukan prapembuatan data sebelum diminta.
1 Lebih akurat, dengan LBA drive dialamatkan dalam blok 512 byte (512n / 512e) atau 4kB (4Kn) untuk alasan efisiensi. Juga, program nyata hampir tidak pernah membutuhkan hanya satu byte pada satu waktu.
2 Secara teknis, mencari hanya mengacu pada perjalanan lengan. Menunggu data berputar di bawah kepala adalah latensi rotasi di atas waktu pencarian.
3 Secara teknis, mereka memiliki tabel pencarian dan memetakan kembali untuk alasan lain, misalnya memakai leveling, tetapi ini benar-benar dapat diabaikan dibandingkan dengan HDD ...
sumber
Notice how it needs to look for every single byte?
:: gantibyte
denganblock
(dan ubah contoh sesuai). Drive mencari bagian 4k (yang selanjutnya dapat disebarkan menjadi 512bytes chunk, tetapi tidak lebih rendah dari ini. Ia tidak mencari di antara setiap byte! Ia mencari di antara setiap blok jika blok berikutnya tidak tepat di belakang (yang sering terjadi pada cakram terfragmentasi) Dan mencari (menggerakkan kepala di sekitar piring, dan menunggu blok lewat di bawahnya) adalah apa yang sangat lama (beberapa milidetik)Seperti yang sudah ditunjukkan oleh jawaban lain, "4K" hampir pasti merujuk pada akses acak dalam blok ukuran 4 KiB.
Setiap kali hard disk (bukan SSD) diminta untuk membaca atau menulis data, ada dua keterlambatan signifikan yang terlibat:
Keduanya adalah jumlah waktu yang relatif konstan untuk setiap drive yang diberikan. Cari latensi adalah fungsi dari seberapa cepat kepala dapat digerakkan dan seberapa jauh ia harus dipindahkan, dan latensi rotasi adalah fungsi dari seberapa cepat platter berputar. Terlebih lagi, mereka tidak banyak berubah selama beberapa dekade terakhir. Produsen benar-benar terbiasa menggunakan waktu pencarian rata-rata misalnya dalam iklan; mereka cukup banyak berhenti melakukan itu ketika ada sedikit atau tidak ada pengembangan di daerah tersebut. Tidak ada pabrikan, terutama di lingkungan dengan persaingan tinggi, menginginkan produk mereka terlihat tidak lebih baik daripada pesaing mereka.
Hard disk desktop biasa berputar pada 7200 rpm, sedangkan drive laptop biasa mungkin berputar pada sekitar 5.000 rpm. Ini berarti bahwa setiap detik, ia mengalami total 120 revolusi (drive desktop) atau sekitar 83 revolusi (drive laptop). Karena rata - rata cakram perlu memutar setengah revolusi sebelum sektor yang diinginkan lewat di bawah kepala, ini berarti bahwa kita dapat mengharapkan cakram dapat melayani sekitar dua kali lebih banyak permintaan I / O per detik, dengan asumsi bahwa
Jadi kita harus berharap untuk dapat melakukan pada urutan 200 I / O per detik jika data yang diminta untuk mengakses (untuk membaca atau menulis) relatif terlokalisasi secara fisik, sehingga latensi rotasi menjadi faktor pembatas. Dalam kasus umum, kami berharap drive dapat melakukan pada urutan 100 I / O per detik jika data tersebar di seluruh piring atau piring, membutuhkan pencarian yang besar dan menyebabkan latensi pencarian menjadi faktor pembatas. . Dalam istilah penyimpanan, ini adalah " IOPSkinerja "hard disk; ini, bukan kinerja I / O berurutan, biasanya merupakan faktor pembatas dalam sistem penyimpanan dunia nyata. (Ini adalah alasan besar mengapa SSD jauh lebih cepat digunakan: mereka menghilangkan latensi rotasi, dan sangat mengurangi latensi pencarian, karena gerakan fisik kepala baca / tulis menjadi tabel pencarian dalam tabel lapisan pemetaan flash, yang disimpan secara elektronik.)
Menulis biasanya lebih lambat ketika ada flush cache yang terlibat. Biasanya sistem operasi dan hard disk mencoba menyusun ulang penulisan acak untuk mengubah I / O acak menjadi I / O berurutan jika memungkinkan, untuk meningkatkan kinerja. Jika ada penghalang cache flush atau tulis yang eksplisit , optimisasi ini dihilangkan untuk tujuan memastikan bahwa keadaan data dalam penyimpanan persisten konsisten dengan apa yang diharapkan oleh perangkat lunak. Pada dasarnya alasan yang sama berlaku selama membaca ketika tidak ada cache disk yang terlibat, baik karena tidak ada (hari ini tidak umum pada sistem gaya desktop) atau karena perangkat lunak sengaja memotongnya (yang sering dilakukan saat mengukur kinerja I / O). Keduanya mengurangi potensi kinerja IOPS maksimum ke kasus yang lebih pesimistis, atau 120 IOPS untuk penggerak 7200 rpm.
Yang kebetulan cocok dengan angka Anda hampir persis. I / O acak dengan ukuran blok kecil adalah pembunuh kinerja absolut untuk hard disk rotasi, yang juga merupakan metrik yang relevan.
Adapun I / O murni berurutan, throughput di kisaran 150 MB / s sama sekali tidak masuk akal untuk hard disk rotasi modern. Tetapi sangat sedikit I / O dunia nyata yang benar-benar berurutan, sehingga dalam sebagian besar situasi, kinerja I / O murni berurutan menjadi lebih merupakan latihan akademis daripada indikasi kinerja dunia nyata.
sumber
4K mengacu pada I / O acak . Ini berarti disk diminta untuk mengakses blok kecil (ukuran 4 KB) pada titik acak dalam file uji. Ini adalah kelemahan dari hard drive; kemampuan untuk mengakses data di berbagai wilayah disk dibatasi oleh kecepatan di mana disk diputar dan seberapa cepat kepala baca-tulis dapat bergerak. Sequential I / O , di mana blok berturut-turut sedang diakses, jauh lebih mudah karena drive dapat dengan mudah membaca atau menulis blok ketika disk berputar.
Solid-state drive (SSD) tidak memiliki masalah dengan I / O acak karena yang perlu dilakukan adalah mencari di mana data disimpan dalam memori yang mendasarinya (biasanya NAND flash, dapat berupa XPoint 3D atau bahkan DRAM) dan membaca atau tulis data di lokasi yang sesuai. SSD sepenuhnya elektronik dan tidak perlu menunggu pada disk yang berputar atau kepala baca-tulis yang bergerak untuk mengakses data, yang membuatnya lebih cepat daripada hard drive dalam hal ini. Karena alasan inilah peningkatan ke SSD secara dramatis meningkatkan kinerja sistem.
Catatan: kinerja I / O berurutan pada SSD seringkali jauh lebih tinggi daripada pada hard drive juga. SSD tipikal memiliki beberapa chip NAND yang terhubung secara paralel dengan pengontrol memori flash, dan dapat mengaksesnya secara bersamaan. Dengan menyebarkan data di seluruh chip ini, tata letak drive yang mirip dengan RAID 0 tercapai, yang sangat meningkatkan kinerja. (Perhatikan bahwa banyak drive baru, terutama yang lebih murah, menggunakan jenis NAND yang disebut TLC NAND yang cenderung lambat saat menulis data. Drive dengan TLC NAND sering menggunakan buffer kecil NAND yang lebih cepat untuk memberikan kinerja yang lebih tinggi untuk operasi penulisan yang lebih kecil tetapi dapat melambat secara dramatis setelah buffer penuh.)
sumber