Saya memiliki Raspberry Pi yang menjalankan Raspbian Wheezy tanpa kepala dengan semua perangkat lunak terkait grafis dihapus.
Saya menjalankan bitcoind, yang sebagian besar menghabiskan sebagian besar sumber daya. Biasanya, ketika saya memeriksa proses melalui top
, saya bisa melihat bahwa hanya bitcoind
menggunakan sejumlah besar sumber daya, dengan sshd
dan top
di tempat kedua dan ketiga atau lebih.
Untuk beberapa alasan, saat ini, proses baru mulai memuncak dalam penggunaan sumber daya, yang disebut mmcqd/0
. Ini sering menggunakan hingga 55% daya CPU di puncak dan tetap pada konstanta sekitar 5% sebaliknya.
Apa yang dilakukan proses ini?
Saya telah membaca bahwa ini mungkin disebabkan oleh kartu SD yang lambat, tetapi saya menguji kecepatan baca / tulis saya dan mendapat> 15MB / s untuk keduanya (saya mendapat kartu SD kelas 10GB 32GB).
mmcqd
bukan proses Pi-spesifik, tetapi ada untuk Linux secara umum.Jawaban:
mmcqd
adalah utas kernel, yang bertanggung jawab untuk mengelola operasi I / O yang antri pada kartu SD. Penggunaan CPU yang tinggi dari proses tersebut menunjukkan bahwa Anda memiliki bottleneck disk I / O.Kecepatan baca / tulis berurutan yang sebenarnya tidak selalu berarti untuk kartu SD, akses acak lebih tipikal untuk Sistem Operasi. Jika Anda tahu bahwa
bitcoind
sering menulis data yang tidak penting ke disk, pertimbangkantmpfs
untuk menggunakan penyimpanan data. Kemudian, menggunakan pekerjaan cron, Anda dapat secara berkala menyinkronkan data dalam tmpfs ke disk.Anda juga dapat bereksperimen dengan menggunakan HDD USB, yang seharusnya berkinerja lebih baik dengan akses tulis (acak).
sumber
tmpfs
kartu SD daripada mengakses kartu SD secara langsung?tmpfs
berada di RAM. Jika satu proses terus-menerus mengubah bagian kecil file, mungkin ada gunanya menyimpan perubahan ini secara berkala. Pada dasarnya Anda memperdagangkan keamanan data untuk kinerja.Saya memiliki masalah yang sama pada sistem Linux yang tertanam, jadi bukan Raspberry Pi tetapi tidak terlalu jauh.
Dalam kasus saya masalahnya hanyalah bahwa disk sudah penuh dan ada proses mencoba untuk menulis log. Saya percaya kegagalan penulisan yang berulang-ulang menyebabkan mmcqd mencoba lagi beberapa kali dan mungkin membuat utas menunggu.
Setelah menghapus beberapa file log, semuanya baik-baik saja.
sumber