Pada sistem modern, akankah menggunakan kompresi disk memberi saya kinerja keseluruhan yang lebih baik?

10

Tampaknya peningkatan CPU telah melampaui kecepatan disk untuk sementara waktu. Dengan asumsi sebuah desktop atau laptop dengan modern dual core Intel / AMD CPU dan disk SATA rata-rata tunggal, akan melakukan kompresi pada sebagian besar semua disk memberikan kinerja keseluruhan yang lebih baik? Pada dasarnya apakah pengurangan bandwidth disk lebih dari menebus peningkatan beban CPU? Saya yakin jawaban sebenarnya adalah "itu tergantung pada apa yang Anda lakukan". Dengan mengajukan pertanyaan ini, saya berharap ada seseorang yang telah melakukan pipa ini dan memberikan beberapa contoh atau jebakan.

kbyrd
sumber
mendefinisikan kinerja? Seperti dalam peningkatan kecepatan atau peningkatan ruang? Anda mungkin tidak akan melihat peningkatan kecepatan tetapi pasti akan menemukan byte cadangan berguna! :-p
Christopher Lightfoot

Jawaban:

9

Ya, kompresi disk dapat memberikan kinerja yang lebih baik dalam kondisi tertentu:

  • Aplikasi Anda terikat disk throughput: CPU modern dan (de) algoritma kompresi dapat berjalan pada bandwidth yang jauh lebih tinggi daripada disk modern dalam transfer panjang. Setiap pengurangan sama sekali dalam jumlah data yang pindah ke atau dari piringan disk adalah kemenangan dalam keadaan ini
  • Dibutuhkan lebih sedikit waktu untuk (de) memampatkan data yang akan ke piringan disk daripada perbedaan waktu transfer, dan Anda memiliki siklus CPU yang harus disimpan

Ada alasan baik ZFS dan Btrfs, keduanya desain lapangan hijau baru-baru ini, termasuk ketentuan untuk kompresi.

Di ruang HPC, ketika aplikasi sedang memeriksa dari memori ke disk, CPU sering tidak melakukan apa pun yang berguna sama sekali. Waktu ini pada dasarnya murni overhead. Setiap penggunaan CPU untuk mengurangi waktu ini adalah kemenangan.

Phil Miller
sumber
Media streaming disk mungkin satu-satunya tempat di mana manfaat terjadi karena ukuran chunk cukup besar. Disk OS standar akan * selalu menerima pukulan.
Ryaner
5
Media streaming bukan aplikasi yang menarik untuk kompresi tingkat sistem penyimpanan. Data harus sudah dikompres dalam format spesifik aplikasi yang jauh lebih baik.
Phil Miller
5

Kompresi disk tidak akan pernah memberi Anda kinerja yang lebih baik.

Ini mungkin memberi Anda hampir tidak ada penalti karena CPU modern cepat, tapi itu hal yang sama sekali berbeda.

Anda menganggap harus mentransfer lebih sedikit data dari / ke disk dapat meningkatkan kinerja; tetapi transfer data besar hampir tidak pernah menjadi hambatan I / O: hambatan sebenarnya adalah mencari waktu dan latensi. Hard disk modern sangat cepat dalam transfer data berkelanjutan dengan file besar, yang memperlambatnya adalah transfer kecil dari seluruh disk.

Beberapa skenario:

  • File media. Itu biasanya sudah dikompresi sendiri (JPEG, MPEG, MP3), jadi mengompres mereka di tingkat sistem file tidak akan membantu sama sekali; itu malah akan memperburuk keadaan, karena sumber daya CPU sudah diperlukan untuk menyandikan / mendekodekan mereka.
  • Basis data. Itu biasanya dibaca dari / ditulis dalam semburan acak kecil, jadi mengompresnya tidak hanya tidak bermanfaat sama sekali, tetapi juga akan menurunkan kinerja, karena DBMS tidak dapat mengidentifikasi dengan tepat di mana pada disk data fisik yang perlu diakses adalah disimpan.
  • Berkas halaman. Ini biasanya cukup besar, tetapi OS perlu menangani potongan data yang sangat kecil di atasnya, dan perlu melakukannya dengan sangat tepat ("Baca 4K di alamat fisik X"); mengompresi itu biasanya tidak mungkin, tetapi bahkan jika itu, itu akan membuang-buang waktu dan sumber daya: itu akan memberikan kompresi hampir nol, karena sifat "data acak lengkap" dari file ini.
Massimo
sumber
1
Jadi mentransfer lebih sedikit data dari disk tidak memberikan manfaat?
kbyrd
Diedit untuk menjawab bahwa :-)
Massimo
3
tidak pernah ada kata yang sangat sempit. Bandwidth mentah dari disk dan melalui bus pci sering menjadi hambatan dengan beberapa pekerjaan yang saya lakukan. Kompresi dapat banyak membantu kinerja, terutama jika Anda telah mengambil langkah-langkah untuk menghilangkan beberapa hambatan lain yang Anda sebutkan
JamesRyan
1
Saya juga ragu untuk mengatakan "tidak pernah". Mungkin ada skenario di mana bandwidth disk adalah hambatannya. Tetapi Anda mungkin benar bahwa ini bukan kasus biasa.
sleske
2
disk i / o hampir selalu merupakan hambatan dalam database
Nick Kavadias
3

Ada situasi tertentu yang sudah melakukan ini pada level per-aplikasi, seperti kompresi video - sistem yang tidak dapat membaca video berkualitas HD mentah dengan cukup cepat dari sebuah dsk sebagai gantinya dapat membaca informasi yang dikompresi dan memperluasnya menggunakan memori dan daya CPU . Tidak ada alasan ini tidak bisa juga menjadi kasus untuk situasi lain yang spesifik, tetapi ini dapat ditangani dengan baik di tingkat aplikasi sehingga metode kompresi yang digunakan dioptimalkan sesuai tujuannya.

Perlu diingat bahwa kinerja overhead dari dekompresi bermanfaat jika seluruh throughput meningkat, jadi idenya tidak boleh diberhentikan begitu saja - saya tidak berpikir kami siap untuk kinerja tujuan umum meningkatkan kompresi, tetapi secara teori memungkinkan untuk menukar sumber daya yang Anda miliki kelebihan (CPU & memori) dengan dorongan di tempat lain (total data dibaca dari hard-drive)

DrStalker
sumber
3

Anda menjawab pertanyaan Anda sendiri! itu tergantung memang jawabannya.

Generalisasi terbaik yang bisa saya buat adalah:

Jika Anda memiliki aplikasi database yang disk baca dibatasi , maka ya! kinerja lebih baik.

Saya tidak berpikir ini adalah kasus untuk sebagian besar kegiatan yang akan Anda lakukan di desktop / laptop.

Di domain saya (SQL Server), saya tahu bahwa pelaporan basis data di bawah beban baca yang banyak bisa mendapatkan kinerja yang lebih baik jika kompresi digunakan. Saya tahu hal yang sama berlaku untuk mysql.

Microsoft memiliki white paper pada fitur kompresi mereka di SQL Server 2008. Bukan pembacaan yang ringan kecuali DBA Anda, tapi inilah satu bagan yang mendukung generalisasi saya:

teks alternatif

Nick Kavadias
sumber
0

Kecepatan CPU selalu lebih cepat daripada kecepatan disk. IMHO, kompresi akan meningkatkan overhead dan karenanya menurunkan kinerja.

joeqwerty
sumber
tapi itu tergantung pada apa yang Anda lakukan :-)
Josh
Bagaimana? Peningkatan overhead adalah peningkatan overhead. Anda tidak dapat membeli uang dengan membelanjakan uang (kecuali uang palsu, tapi itu cerita lain).
Mark Henderson
Fungsi mengompresi dan mendekompresi file, terlepas dari apakah mereka lebih kecil atau lebih karena kompresi, akan memperkenalkan kinerja overhead. Ketika file dibaca dari disk ke memori itu harus didekompresi. Ketika itu ditulis dari memori ke disk itu harus dikompresi.
joeqwerty
3
tetapi jika cpu Anda tidak melakukan apa-apa dan bandwidth disk Anda adalah hambatan, cpu Anda akan berakhir melakukan lebih banyak pekerjaan tetapi kinerja keseluruhan akan meningkat. Ini benar-benar tergantung pada jenis data apa yang Anda retreiving dan apa yang Anda lakukan dengannya.
JamesRyan
0

Saya membaca sesuatu yang mirip dengan kemarin mengenai OSX dan ini adalah kompresi sistem file - Pada dasarnya jawabannya berkisar pada apa yang ingin Anda kompres - dalam contoh ini dia berbicara tentang data "FAT"; struktur file, properti, metadata dll yang ketika disimpan bersama dapat dikompres untuk menghemat ruang dan dibaca ke dalam CPU lebih cepat daripada mencari kepala di semua tempat untuk menemukan data untuk setiap file ...

Bagaimanapun, patut dibaca jika Anda memikirkan hal-hal seperti :-p

Tetapi kompresi bukan hanya tentang menghemat ruang disk. Ini juga merupakan contoh klasik dari perdagangan siklus CPU untuk penurunan latensi dan bandwidth I / O. Selama beberapa dekade terakhir, kinerja CPU menjadi lebih baik (dan sumber daya komputasi lebih banyak — lebih banyak dari itu nanti) dengan kecepatan yang jauh lebih cepat daripada kinerja disk yang meningkat. Waktu pencarian hard disk modern dan penundaan rotasi masih diukur dalam milidetik. Dalam satu milidetik, CPU 2 GHz melewati dua juta siklus. Dan tentu saja, masih ada waktu transfer data aktual untuk dipertimbangkan.

Memang, beberapa level caching di seluruh OS dan perangkat keras bekerja keras untuk menyembunyikan penundaan ini. Tetapi bit-bit itu harus keluar dari disk di beberapa titik untuk mengisi cache itu. Kompresi berarti lebih sedikit bit yang harus ditransfer. Mengingat sumber daya CPU yang hampir lucu pada multi-core Mac modern dalam penggunaan normal, total waktu yang diperlukan untuk mentransfer muatan terkompresi dari disk dan menggunakan CPU untuk mendekompres isinya ke dalam memori biasanya masih jauh lebih sedikit daripada waktu diperlukan untuk mentransfer data dalam bentuk yang tidak terkompresi.

Itu menjelaskan manfaat kinerja potensial dari mentransfer lebih sedikit data, tetapi penggunaan atribut yang diperluas untuk menyimpan konten file sebenarnya dapat membuat segalanya lebih cepat, juga. Itu semua ada hubungannya dengan lokalitas data.

Jika ada satu hal yang memperlambat hard disk lebih dari mentransfer sejumlah besar data, itu memindahkan kepalanya dari satu bagian disk ke yang lain. Setiap gerakan berarti waktu bagi kepala untuk mulai bergerak, lalu berhenti, lalu memastikan bahwa ia diposisikan dengan benar di atas lokasi yang diinginkan, kemudian tunggu disk pemintalan untuk meletakkan bit yang diinginkan di bawahnya. Ini semua adalah bagian yang nyata, fisik, bergerak, dan menakjubkan bahwa mereka menari secepat dan seefisien yang mereka lakukan, tetapi fisika memiliki batasnya. Gerakan ini adalah pembunuh kinerja nyata untuk penyimpanan rotasi seperti hard disk.

Format volume HFS + menyimpan semua informasi tentang file — metadata — di dua lokasi utama pada disk: File Katalog, yang menyimpan tanggal file, izin, kepemilikan, dan sejumlah hal lain, dan File Atribut, yang menyimpan "garpu nama" . "

Atribut diperluas di HFS + diimplementasikan sebagai garpu bernama dalam File Atribut. Tetapi tidak seperti garpu sumber daya, yang bisa sangat besar (hingga ukuran file maksimum yang didukung oleh sistem file), atribut diperluas di HFS + disimpan "inline" di File Atribut. Dalam praktiknya, ini berarti batas sekitar 128 byte per atribut. Tetapi itu juga berarti bahwa kepala disk tidak perlu melakukan perjalanan ke bagian lain dari disk untuk mendapatkan data aktual.

Seperti yang dapat Anda bayangkan, blok disk yang menyusun file Katalog dan Atribut sering diakses, dan oleh karena itu lebih mungkin daripada kebanyakan berada di cache di suatu tempat. Semua ini bersekongkol untuk membuat penyimpanan file yang lengkap, termasuk metadata dalam datanya, dalam Katalog terstruktur-B-pohon dan Atribut mengarsipkan kemenangan kinerja secara keseluruhan. Bahkan muatan delapan byte yang membengkak menjadi 25 byte bukanlah masalah, asalkan masih kurang dari ukuran blok alokasi untuk penyimpanan data normal, dan selama itu semua sesuai dalam simpul B-tree dalam File Atribut yang OS harus membaca secara keseluruhan.

Ada kontribusi signifikan lain untuk mengurangi jejak cakram Snow Leopard (misalnya, penghapusan pelokalan yang tidak perlu dan file "designable.nib") tetapi kompresi HFS + sejauh ini merupakan yang paling menarik secara teknis.

Dari: http://arstechnica.com/apple/reviews/2009/08/mac-os-x-10-6.ars/3

Christopher Lightfoot
sumber
Saya sudah memikirkan hal ini sebelumnya, tetapi artikel yang tepat mendorong saya untuk mengirim pertanyaan ini.
kbyrd
lol. Menarik :-p
Christopher Lightfoot
0

Kompresi Disk Microsoft jelek. Ini hampir tidak dapat dibandingkan dalam rasio dengan metode ARJ dari 80-an. Tapi, bahkan kompresi Microsoft BISA memberikan kinerja yang lebih baik pada hard drive (laptop) yang sangat lambat. Terutama jika ada cukup RAM untuk cache tulis dan mencegah penulisan yang berlebihan.

Proses penulisan adalah titik lemah dari setiap metode kompresi yang diaktifkan akses-acak.

Jadi, jika Anda ingin drive terkompresi, Anda lebih baik pindah ke beberapa jenis Linux.

Kompresi disk juga sangat cocok untuk RAM-drive, tidak perlu memberi tahu Anda alasannya.

Sehat
sumber
1
Bisakah Anda menambahkan beberapa data pendukung, mungkin perbandingan kinerja antara solusi berbasis Windows dan Linux?
psarossy
Ya, jika Anda akan menabrak utas berusia 3,5 tahun, Anda sebaiknya membawa beberapa fakta baru yang sulit.
MDMarra
-1

Ragu-ragu. Kompresi dan dekompresi melibatkan lebih dari sekedar disk dan CPU; khususnya akan ada banyak transfer data ke dan dari memori (selain overhead transfer standar tanpa kompresi) yang akan sangat merugikan dalam hal kesalahan halaman.

Maximus Minimus
sumber
-1

Singkatnya, tidak, Anda mungkin tidak akan mendapatkan kinerja.

Meskipun kompresi akan meningkatkan kinerja penyimpanan Anda, ini akan secara signifikan menurunkan kecepatan prosesor Anda. Mungkin karena jenis file yang akan Anda dekompresi. Jika Anda hanya berurusan dengan kata, excel, dan tipe file dasar lainnya, lanjutkan dan kompres. Jika file individual lebih besar, Anda akan mengorbankan lebih banyak waktu Anda.

badai
sumber