Monday, July 14, 2008

Performa lambat pada Gentoo (solved)

Baiklah, sebenarnya masalah ini sudah cukup lama, tepatnya sejak aku memutuskan untuk mengupgrade secara berkala venom yang masih bersistem operasikan Gentoo 2007.0 ke Gentoo 2008.0. Sejak itulah perubahan performa secara significant cukup terasa khususnya apabila melakukan multitasking dan multiprocess di system ini dan lebih spesifik lagi apabila melakukan aktifitas baca/tulis ke hardisk (khususnya dalam jumlah besar, waktu yang lama dan melibatkan cache, kerja processor, spare memori dsb), sebagai contoh: saat mengkopikan file sebesar 1GB dari flashdisk ke hardisk akan mengakibatkan processor bekerja hingga 100%, memaksa aplikasi yang lain menjadi tidak bisa diakses secara sempurna (pemutar musik, memutar lagu tersendat-sendat).

Cukup lama bagiku untuk melakukan troubleshooting permasalahan ini, mulai dari melakukan inspeksi pada penggunaan virtual memory dan membatasinya di kernel, lalu kemungkinan hal ini diakibatkan salah konfigurasi parameter processor, dan setting processor pada kernel telah aku lakukan, dan benar, hal ini meningkatkan kinerja processor dan virtual memori, tetapi ternyata tetap tidak signifikan mengatasi permasalahan performa ini (saat dihadapkan dengan kegiatan tulis/baca ke disk/cd-rom/removable media)

Aku masih terpaku bahwa penyebab hal ini adalah kemungkinan "dual processor" yang kau miliki tidak secara maksimal digunakan oleh system, dan untuk itu aku telah meng-optimasi dual processor yang aku miliki agar berjalan sebagaimana mestinya, dan benar saja kinerja dual-processor milikku semakin meningkat, tetapi sayangnya akan tidak berdaya terhadap permasalahan tulis/baca ke disk/cd-rom/removable media.

Sampai akhirnya hari ini aku berkesimpulan pasti ada yang salah dengan performa hardisk yang aku miliki,kemudian sampailah aku kesebuah artikel untuk meningkatkan performa IDE device menggunakan hdparm.
Hdparm is a tool that allows you to set IDE device settings. This includes things such as DMA modes, transfer settings and various other settings that can help improve the speed of your hard disks and CDROMs
These settings are not enabled by default, so you will probably want to enable them
Dan akhirnya hal ini menyadarkan aku bahwa aku tidak pernah melakukan pemeriksaan terhadap settingan baca/tulis ke disk, pertama-tama lakukan pemeriksaan disk kita (/dev/hda), aku pernah sekali berpikir mengapa disk yang kumiliki dikenali dengan hd bukan sd (sata)
venom ~ # hdparm -i /dev/hda

/dev/hda:

Model=HITACHI HTS541680J9SA00, FwRev=SB2IC7EP, SerialNo=SB2241SGJ3SN9E
Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs }
RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=4
BuffType=DualPortCache, BuffSize=7516kB, MaxMultSect=16, MultSect=16
CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=156301488
IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
PIO modes: pio0 pio1 pio2 pio3 pio4
DMA modes: mdma0 mdma1 mdma2
UDMA modes: udma0 udma1 udma2 udma3 udma4 *udma5
AdvancedPM=yes: mode=0x80 (128) WriteCache=enabled
Drive conforms to: ATA/ATAPI-7 T13 1532D revision 1: ATA/ATAPI-2,3,4,5,6,7

* signifies the current active mode
kemudian lakukan benchmarking kecepatan caching dan buffering
venom ~ # hdparm -tT /dev/hda

/dev/hda:
Timing cached reads: 144 MB in 2.00 seconds = 71.96 MB/sec
Timing buffered disk reads: 4 MB in 3.38 seconds = 1.18 MB/sec
terlihat waktu buffering sangat lambat sekali, dan aku rasa memang hal inilah yang menyebabkan prosesor bekerja mati-matian untuk menjaga proses baca/tulis, sekarang kita liat info parameter hardisk yang dimiliki
venom ~ # hdparm /dev/hda

/dev/hda:
multcount = 16 (on)
IO_support = 0 (default)
16-bit)
unmaskirq = 0 (off)
using_dma = 0 (off)
keepsettings = 0 (off)
readonly = 0 (off)
readahead = 256 (on)
geometry = 16383/255/63, sectors = 156301488, start = 0
venom ~ #
Dan terlihat bahwa IO_support yang ter-set untuk 16 bit (here are ther real problems), apalagi saat kucoba untuk menyalakan dukungan DMA maka akan mendapati error, sehingga optimasi yang dilakukan diantaranya adalah men-set dukungan IO untuk 32 bit sync (c3),set Xfer mode ke udma (X69), set unmasking (u1), meng-enable Read look-ahead (A1), serta mengenable write-caching (W1)
venom boot # hdparm -A1 -u1 -c3 -X69 -W1 -m16 /dev/hda

/dev/hda:
setting 32-bit IO_support flag to 3
setting multcount to 16
setting unmaskirq to 1 (on)
setting using_dma to 1 (on)
HDIO_SET_DMA failed: Operation not permitted
setting xfermode to 69 (UltraDMA mode5)
setting drive read-lookahead to 1 (on)
setting drive write-caching to 1 (on)
multcount = 16 (on)
IO_support = 3 (32-bit w/sync)
unmaskirq = 1 (on)
using_dma = 0 (off)
look-ahead = 1 (on)
write-caching = 1 (on)
baiklah, semua telah tersetting, sekarang aku lakukan kembali benchmarking
venom boot # hdparm -tT /dev/hda

/dev/hda:
Timing cached reads: 1596 MB in 2.00 seconds = 798.47 MB/sec
Timing buffered disk reads: 12 MB in 3.48 seconds = 3.45 MB/sec
dan terlihat satu hasil yang cukup significant baik waktu caching dan buffering, tetapi tidak cukup memuaskan. Untuk membuat parameter ini selalu di gunakan saat komputer menyala, maka tambahkan parameter ini ke file konfigurasi hdparm di /etc/conf.c/hdparm,

hda_args="-A1 -d1 -u1 -c3 -X69 -W1 -m16"

dan pastikan service hdparm selalu menyala setiap booting dengan menggunakan perintah "rc-update add hdparm default"

Karena hasil yang belum maksimal (dikarenakan DMA belum diset) maka aku melakukan sedikit pencarian di google dan menemukan artikel menarik tentang isu yang di miliki oleh Intel Corporation 82801GBM/GHM sata controller
a). There was an issue concerning the Intel Corporation 82801GBM/GHM (ICH7 Family) Sata IDE Controller (rev 02) working in concert with the TSSTCorp CD/DVDW TS-L632D. DMA could not be enabled on /dev/hdc, resulting in slow performance of the CD/DVD drive. Attempts to enable dma using hdparm resulted in:

/dev/hdc
setting using_dma to 1 (on)
HDIO_SET_DMA failed: Operation not permitted
using_dma = 0 (off)

(after considerable consternation, I finally found a solution for this).

..in -Device Drivers --> ATA/ATAPI/MFM/RLL support -->

disable: < > Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support" (all of the subcategories will also disappear from the list).

..verify under - Serial ATA (prod) and Parallel ATA (experimental) drivers -->

ensure that this is on: < * > Intel PATA MPIIX support (it should also work fine if it's a module).
Dan kemudian melakukan kompile kernel kembali, anda dapat lebih mudah melakukannya dengan aplikasi "genkernel"
#genkernel --menuconfig --boorloader=grub all

Dan, jangan lupa untuk merubah parameter di grub, untuk path dari "/dev/hda/" ke "/dev/sda" sebelum anda melakukan restart, karena disinilah kita akan mengembalikan deteksi hardisk murni ke SATA dengan kompilasi yang kita lakukan
Setelah restart, coba lakukan benchmarking kembali, dan hasil yang di dapatkan sangat memuaskan serta semua masalah yang selama ini aku rasakan telah teratasi (saat ini dipikiranku adalah, "default" kernel parameter khususnya bagian device driver untuk disk-lah yang menyebabkan hal ini terjadi sejak melakukan upgrading ke 2008.0 dan kernel)
venom ~ # hdparm -tT /dev/sda

/dev/sda:
Timing cached reads: 2364 MB in 2.00 seconds = 1183.32 MB/sec
Timing buffered disk reads: 64 MB in 3.06 seconds = 20.89 MB/sec
Untuk melakukan setting parameter, kita sudah harus menggunakan sdparm, bukan hdparm, karena akan menghasilkan error pembacaan parameter.
venom ~ # hdparm /dev/sda

/dev/sda:
IO_support = 0 (default)
16-bit)
HDIO_GET_UNMASKINTR failed: Inappropriate ioctl for device
HDIO_GET_DMA failed: Inappropriate ioctl for device
HDIO_GET_KEEPSETTINGS failed: Inappropriate ioctl for device
readonly = 0 (off)
readahead = 256 (on)
geometry = 9729/255/63, sectors = 156301488, start = 0

venom ~ # sdparm /dev/sda
/dev/sda: ATA HITACHI HTS54168 SB2I
Read write error recovery mode page:
AWRE 1
ARRE 0
PER 0
Caching (SBC) mode page:
WCE 1
RCD 0
Control mode page:
SWP 0

venom ~ # sdparm -a /dev/sda
/dev/sda: ATA HITACHI HTS54168 SB2I
Read write error recovery mode page:
AWRE 1
ARRE 0
TB 0
RC 0
EER 0
PER 0
DTE 0
DCR 0
RRC 0
COR_S 0
HOC 0
DSOC 0
WRC 0
RTL 0
Caching (SBC) mode page:
IC 0
ABPF 0
CAP 0
DISC 0
SIZE 0
WCE 1
MF 0
RCD 0
DRRP 0
WRP 0
DPTL 0
MIPF 0
MAPF 0
MAPFC 0
FSW 0
LBCSS 0
DRA 0
NV_DIS 0
NCS 0
CSS 0
Control mode page:
TST 0
TMF_ONLY 0
D_SENSE 0
GLTSD 1
RLEC 0
QAM 0
QERR 0
RAC 0
UA_INTLCK 0
SWP 0
ATO 0
TAS 0
AUTOLOAD 0
BTP -1
ESTCT 30
ok, thats all folk, semoga sedikit banyak bisa membantu, khususnya bagi pengguna Gentoo yang merasakan performa yang menurun setelah melakukan upgrading system atau kernel.

good luck
images are taken from here

2 comments:

  1. Mas, apakah ini bisa berlaku juga untuk Ubuntu ya? Soale aku baru sukses upgrade dari Gutsy ke Hardy, tapi habis itu laptop jadi lelet banget. Beda dibanding Gusty dulu maupun fresh install Hardy (di partisi berbeda).

    Thank's
    Fuad Muftie

    ReplyDelete
  2. @fuadmuftie: seharusnya bisa untuk GNU/linux, cuma masalah ini aku temui di gentoo, jadi aku buat spesifik, coba aja di ikuti step-step-nya

    ReplyDelete