Bagaimana cara mengetahui apa yang membuat mesin saya beku?

10

Saya menjalankan Arch di mesin ini:

3.40GHz i7 hexacore (4930K)

16GB DDR3 1600MHz RAM

2xSamsung 840 EVO SSD di Raid0 (menggunakan serangan BTRFS)

Ketika saya menjalankan VMware di Arch saya dengan beberapa VM (2 atau 3), memberi mereka masing-masing sekitar 2-4 core, dan masing-masing 2GB RAM, sistem saya mulai membeku secara acak. Setiap beberapa menit, sistem akan membeku di mana saja dari 10 hingga 30 detik, dan kemudian mulai bergerak lagi, hanya untuk membekukan hingga 30 detik kemudian sampai saya mematikan VM. Ketika sistem membeku, mouse masih bergerak dengan baik, tetapi aplikasi berhenti merespons pada host - vmware tidak merespons, firefox (yang juga terbuka pada host) tidak merespons, dll.

Ketika pembekuan terjadi, jika saya menjalankan proses monitor, itu menunjukkan beberapa core yang di-maxed oleh vmware, tetapi pada saat yang sama, ada core yang tidak digunakan lainnya. Saya juga memiliki lebih dari cukup RAM - VM menggunakan total 6GB, dan tuan rumah memiliki 10GB tersisa. Saya memiliki 0 ruang swap, jadi tidak mungkin swapping memperlambat apa pun.

Ada laporan bahwa karena btrf menyebabkan fragmentasi file pada level sistem file, mesin virtual mungkin berjalan lambat. Sejauh yang saya tahu, fragmentasi hanya merupakan masalah pada hard disk tradisional - SSD tidak memiliki kepala baca yang mencari, sehingga mereka tidak peduli jika file sangat terfragmentasi.

Ini tidak pernah terjadi ketika saya menjalankan Debian 7, jadi saya cukup yakin itu bukan masalah perangkat keras.

Alat apa yang bisa saya jalankan untuk mencari tahu mengapa sistem saya terus membeku? Saya sudah mencoba top / htop, dan iotop (tidak ada yang menulis atau membaca secara berlebihan ketika sistem macet). Tampaknya tidak ada jenis monitor kegiatan untuk btrfs untuk mengetahui apakah itu mengalami masalah dengan menulis / membaca apa pun. Apakah ada hal lain yang bisa saya coba?

Tal
sumber
Ini mungkin terkait dengan penggunaan terkait dengan LUKS: unix.stackexchange.com/questions/203677/…
brauliobo

Jawaban:

15

Dari halaman gotchas btrfs :

File dengan banyak penulisan acak dapat menjadi sangat terfragmentasi (10.000+ tingkat) menyebabkan trash pada HDD dan lonjakan multi-detik yang berlebihan dari beban CPU pada sistem dengan SSD atau RAM dalam jumlah besar.

  • Di server dan workstation ini memengaruhi basis data dan gambar mesin virtual.

    • Opsi mount nodatacow dapat digunakan di sini, dengan gotcha terkait.

    ...

  • Gejalanya meliputi btrfs-transacti dan btrfs-endio-wri yang menghabiskan banyak waktu CPU (dalam paku, mungkin dipicu oleh sinkronisasi). Anda dapat menggunakan filefrag untuk mencari file yang sangat terfragmentasi (mungkin tidak bekerja dengan benar dengan kompresi).

Saya memiliki masalah yang sama seperti yang Anda gambarkan dengan Virtualbox. The nodatacowpilihan untuk btrfs tidak membantu dengan cara yang nyata pada sistem saya. Saya mencoba opsi auto-defragment (disebutkan sebagai solusi yang mungkin untuk database aplikasi di lingkungan desktop) juga, tanpa hasil yang akan membuat perilaku tersebut dapat diterima.

Pada akhirnya saya menciutkan partisi btrfs saya dan Volume Logical tempat tinggalnya, saya membuat LV baru dan memformatnya sebagai ext4, dan kemudian meletakkan gambar disk VM yang saya miliki (VirtualBox) pada "partisi" itu.

Anthon
sumber
Jelas terdengar seperti masalah saya. Saya benar-benar mencari cara untuk memeriksa seberapa terfragmentasi file, tetapi menyerah ketika saya membaca fragmentasi tidak mempengaruhi SSD seperti halnya HDD. Rupanya tempat yang saya baca itu tidak sepenuhnya akurat - masih mempengaruhi SSD - itu sangat menarik. Saya akan mencoba filefrag, dan mungkin mengubah ukuran partisi btrfs saya dan memindahkan VMs saya ke partisi ext4 seperti yang Anda lakukan, dan melaporkannya kembali. Terima kasih
Tal
0

Ini bisa menjadi masalah hugepages yang transparan, di mana sebuah thread kernel dikelompokkan , secara harfiah menambang RAM Anda untuk mendefragmentasi atau membuat hugepage dari yang 4k.

Kernel bisa saja memutuskan untuk mengaktifkan hugepage mengingat jumlah RAM sistem Anda yang cukup besar.

Periksa isi dari dua merdu kernel ini:

/sys/kernel/mm/transparent_hugepage/enabled
/sys/kernel/mm/transparent_hugepage/defrag

Jika kontennya adalah always, Anda bisa mengubahnya never, dan melihat apakah cpu spikes / freeze hilang.

Marco De Lellis
sumber
masalahnya ada pada
keterlambatan
0

Masalah ini sepenuhnya diselesaikan dengan tidak menggunakan LUKS pada partisi. Jadi saya memformat partisi langsung dengan BTRFS dan bukan dengan LUKS terlebih dahulu.

Juga dipasang dengan parameter berikut:

/dev/sda2 /           btrfs       rw,noatime,space_cache,compress=lzo,ssd,discard,autodefrag,commit=0,thread_pool=8 0 0

Terkait dengan kinerja penulisan Abysmal general dm-crypt (LUKS)

brauliobo
sumber