Saya perhatikan ketika saya melakukan aplikasi penulisan yang berat, seluruh sistem melambat. Untuk menguji ini lebih lanjut, saya menjalankan ini untuk melakukan (relatif) CPU rendah, aktivitas disk tinggi:
john -incremental > file_on_SSD
Ini memompa puluhan ribu string per detik ke file pada disk sistem saya.
Ketika melakukan hal ini, tetikus tertinggal, TTY menjadi tidak responsif, aplikasi "memudar" dan umumnya seluruh komputer menjadi tidak dapat digunakan. Ketika saya akhirnya dapat mengontrol + C john
, sistem kembali ke kekuatan penuh setelah beberapa detik.
Ini adalah contoh ekstrem tetapi saya memiliki masalah serupa dengan aktivitas yang sedikit kurang intensif seperti menyalin file besar dari sumber cepat atau transcoding.
Disk OS utama saya adalah SSD yang cukup cepat ( OCZ Agility 60GB ) dengan EXT4. Jika saya menulis john
output ke disk mekanis dengan EXT4, saya tidak mengalami perlambatan yang sama meskipun nilainya jauh lebih lambat (SSD ~ 42.000 kata per detik, mekanik 8.000 b / d). Throughput mungkin relevan. Disk mekanis juga tidak ada hubungannya dengan sistem. Itu hanya data.
Dan saya menggunakan kernel 2.6.35-2 tetapi saya telah memperhatikan masalah ini sejak saya mendapatkan SSD ini ketika saya mungkin menggunakan .31 atau sesuatu dari sekitar waktu itu.
Jadi apa yang menyebabkan perlambatan? Masalah EXT4? Masalah kernel? Masalah SSD? Semua yang di atas? Sesuatu yang lain
Jika Anda pikir saya perlu menjalankan tes tambahan, cukup beri komentar yang memberi tahu saya apa yang harus dilakukan dan saya akan menambahkan hasilnya ke pertanyaan.
sumber
Jawaban:
Ini telah menjadi masalah yang diketahui untuk sementara waktu. Menggunakan FS yang disetel oleh SSD seperti Btrfs mungkin membantu, tetapi mungkin tidak.
Pada akhirnya, ini adalah bug dalam IO scheduler / sistem manajemen memori. Baru-baru ini, ada beberapa tambalan yang bertujuan untuk mengatasi masalah ini. Lihat Tetap: Masalah Responsifitas Desktop Linux?
Tambalan-tambalan ini pada akhirnya mungkin masuk ke kernel mainline, tetapi untuk sekarang, Anda mungkin harus mengkompilasi kernel Anda sendiri jika Anda ingin memperbaiki masalah ini.
sumber
Ada beberapa hal yang dapat Anda periksa untuk mencoba meningkatkan kinerja SSD di Linux.
Setel titik pemasangan ke 'noatime'. Aktivitas tambahan yang memperbarui waktu akses umumnya sia-sia pada sebagian besar kasus penggunaan. Terutama dalam kasus pemompaan baris tunggal ke dalam file, Anda memaksakan beberapa pembaruan ke sistem file untuk setiap akses.
Periksa liftnya. Lift default untuk sebagian besar distro diatur untuk piringan berputar akses acak. SSD tidak memerlukan logika tambahan, jadi mengatur elevator ke noop dapat meningkatkan kinerja dengan membiarkan perangkat keras mengelola penulisan.
Caching write-through v write-back. Ini sedikit lebih esoteris, tetapi Anda dapat memeriksa metode caching yang digunakan
hdparm
untuk perangkat. Caching Write-back dapat memiliki dampak positif pada kinerja SSD dibandingkan dengan write-through.sumber
Caching file Anda mungkin salah disetel untuk beban kerja Anda. Sayangnya, kernel Linux cukup bodoh untuk tidak menangani ini secara otomatis dan standarnya cukup buruk jika Anda memiliki banyak RAM dan perangkat blok cukup lambat. Lihat https://lonesysadmin.net/2013/12/22/better-linux-disk-caching-performance-vm-dirty_ratio/ untuk detailnya.
Saya sarankan mencoba memodifikasi
/etc/sysctl.conf
jugasangat mengurangi tekanan RAM yang disebabkan oleh cache tulis untuk memungkinkan kernel menangani tugas-tugas lain dengan lebih baik. Ini akan memperdagangkan latensi yang ditingkatkan untuk throughput yang lebih rendah.
Kemungkinan lain adalah meningkatkan caching tetapi jika proses Anda terus-menerus menulis data baru setiap saat, Anda akan mencapai latensi yang sangat buruk jika cache pernah penuh. Jika Anda ingin mencobanya, Anda dapat melakukan sesuatu seperti
Perhatikan bahwa
*_ratio
pengaturan merujuk pada persentase RAM yang tersedia. Jika Anda ingin kontrol yang lebih baik, gunakan*_bytes
pengaturan. Saya pribadi menggunakan konfigurasi berikut untuk workstation saya:Itu membatasi cache penulisan latar belakang hingga 50 MB dan memaksa penulisan sinkron jika 200 MB ada di cache.
sumber