Menggunakan BTRFS Sebagai Filesystem Utama Di Slackware

 Widya Walesa  |  2014/04/23 01:53:15 WIB  |  2016/07/27 23:44:34 WIB

slackwareSudah pernah mendengar tentang #btrfs? Mungkin malah sudah ada yang mencobanya. Dalam tulisan ini saya akan menjelaskan pengalaman saya menggunakan filesystem btrfs sebagai filesystem utama (ROOTFS) untuk #slackware #linux 64-bit. Harap diingat, bahwa percobaan ini menggunakan sebuah kloning mesin virtual yang saya jalankan dalam emulator Qemu. Jadi saran saya buat sampeyan-sampeyan yang ingin mencoba teknik ini, harap gunakan mesin virtual karena resiko dari teknik yang teramat tidak resmi ini adalah sistem anda gagal booting. Tentu saja saya tidak akan menanggung dosa dari perbuatan anda sendiri jika anda mencobanya di mesin produksi anda. Anda sudah saya ingatkan lho ya.

Instalasi Slackware Di Mesin UEFI

 Widya Walesa  |  2014/02/28 15:59:16 WIB  |  2016/07/27 23:45:17 WIB

slackwareMendadak dipinjami mesin yang lumayan baru dan benar-benar berat. Tetapi meskipun berat, mesin sangat kuat untuk komputasi. Daripada mesin ini berkarat dan menjadi tidak berguna, saya coba instalasi #Slackware ke dalamnya. Toh mesin ini juga tidak dilengkapi OS dari pabriknya saat saya terima. Pingin tahu bentuknya? Seperti inilah kira-kira penampakannya:

Dell Precision M6800

MySQL - Mencegah Pembengkakan Ibdata

 Widya Walesa  |  2013/10/10 03:04:46 WIB  |  2020/08/12 12:45:40 WIB

mysql-logoAda yang pakai #InnoDB untuk databasenya? Pernah merasa kalau berkas ibdata* membengkak seiring dengan pertumbuhan data? Meskipun kemudian database dihapus, berkas ibdata* masih berukuran raksasa? Hal ini sering terjadi utamanya jika kita memiliki banyak #database yang menggunakan InnoDB, apalagi jika data yang tersimpan sudah mencapai jutaan atau lebih. Kondisi ini tidak akan menjadi masalah apabila satu atau lebih database dengan InnoDB kita hapus dan berkas ibdata* ikut menyesuaikan diri alias menyusut. Tetapi kenyataannya tidaklah demikian. Ibdata tidak didesain untuk menyusut meskipun seluruh database dengan format InnoDB kita hapus dari daftar. Artinya kita tetap menyimpan 'sampah' di dalam direktori database kita meskipun berkas databasenya sudah tidak ada. Menyebalkan bukan?

Apa sih #ibdata itu? Menurut dokumentasi dari #MySQL[1][3], ibdata adalah sekumpulan berkas biasanya bernama ibdata1, ibdata2, dan seterusnya yang menyusun ruangan tabel sistem InnoDB. Berkas-berkas ini berisi metadata dari tabel-tabel InnoDB, kamus data, ruangan untuk log UNDO, buffer perubahan, dan buffer doublewrite. Berkas ini juga dapat memuat beberapa atau seluruh data dalam tabel (tergantung apakah opsi file-per-table dalam keadaan aktif pada saat tabel dibuat atau tidak). Jika opsi innodb_file_per_table diaktifkan, maka data dan indeks dari tabel yang akan dibuat (tabel baru) akan disimpan ke dalam berkas .ibd yang terpisah dan bukan disimpan di dalam ruangan tabel sistem.

Nah sesuai dengan dokumentasi tersebut, sampeyan bisa pakai opsi innodb_file_per_table di my.cnf, lalu restart database sampeyan. Salah satu keuntungan menggunakan opsi ini adalah, tiap kali sampeyan menghapus sebuah atau beberapa database, anda bisa memperoleh kembali ruang harddisk yang tadinya dipakai oleh database.[2]

Jika database berformat InnoDB sampeyan sudah kadung tidak menggunakan opsi innodb_file_per_table, sampeyan tetap bisa mengubah strukturnya dengan cara seperti ini[4]:

1. Dump seluruh database, misalnya dengan:

shell> mysqldump -u root -p --opt -A > semua_db.sql

2. Login ke mysql, lalu drop seluruh database kecuali milik mysql

mysql> drop database DATABASEKU;

3. Hentikan servis mysql

4. Edit file my.cnf, masukkan opsi innodb_file_per_table

5. Hapus berkas ibdata* dan ib_log*

6. Jalankan servis mysql. Sampeyan bisa lihat di log mysql bahwa mysql membuat ulang berkas ibdata* dan ib_log* sesuai kebutuhan

7. Restore kembali database sampeyan

shell> mysql -u root -p < semua_db.sql

Sampeyan bisa cek kembali ukuran ibdata* setelah restore dan setelah transaksi. Perubahannya akan lebih sedikit daripada tanpa opsi innodb_file_per_table.

Selamat mencoba

Referensi:

  1. https://dev.mysql.com/doc/refman/5.5/en/glossary.html#glos_ibdata_file
  2. https://dev.mysql.com/doc/refman/5.5/en/innodb-multiple-tablespaces.html
  3. http://www.mysqlperformanceblog.com/2013/08/20/why-is-the-ibdata1-file-continuously-growing-in-mysql/
  4. http://stackoverflow.com/questions/3456159/how-to-shrink-purge-ibdata1-file-in-mysql

Pindah Partisi ROOT FreeBSD

 Widya Walesa  |  2013/08/28 20:29:09 WIB  |  2016/07/27 20:38:25 WIB

freebsd-logoSaya melakukan hal ini untuk memperbaiki filesystem ROOT yang tiba-tiba penuh hingga 108% tanpa diketahui sebabnya. Jika ingin mencobanya, silakan gunakan lingkungan virtual, misalnya di virtualbox. Saya juga menggunakan #virtualbox untuk menguji coba prosedur ini. Setelah saya yakin tidak ada masalah berarti yang timbul akibat prosedur ini, barulah saya menjalankannya di mesin yang asli.

Mencoba Fitur DPM Radeon Linux 3.11.0-RC2 Di KDE

 Widya Walesa  |  2013/07/19 04:39:34 WIB  |  2020/08/13 20:27:47 WIB

AMD RadeonBeberapa waktu terakhir saya sering sekali mempos perkembangan driver #radeon #opensource di #Linux di forum Ayo Belajar Linux di Facebook. Perkembangan terakhir dari kode driver radeon opensource adalah pengembang telah menambahkan fitur Dynamic Power Management (DPM) yang telah dinanti-nanti pengguna kartu grafis #AMD (ATI) seperti saya. Setelah sebelumnya hanya mencoba fitur DPM dalam modus teks, dan driver radeon Linux 3.11.0-rc1 tidak dapat bekerja dengan normal khususnya di kartu yang menggunakan subdriver r600. Saat ini setelah Linux 3.11.0-rc2 keluar dari kandangnya, saya mencoba menggunakannya untuk menjalankan desktop #KDE.

Persiapan

Hal pertama yang saya lakukan adalah memperbarui #Xorg standar #Slackware-current yaitu versi 1.13 ke versi paket terakhir yang ada. Setelah itu saya membangun ulang libdrm, mesa, dan xf86-video-ati menggunakan versi terakhir jika tersedia atau versi git. Libdrm saya perbarui ke versi 2.4.46 karena versi ini merupakan versi minimal yang diminta oleh mesa-git dan xf86-video-ati-git.

Kemudian saya membangun kernel Linux 3.11.0-rc2 dengan menggunakan basis konfigurasi config-generic-smp-3.10.1-smp yang sudah disediakan oleh Slackware-current. Cara membangunnnya dapat dilihat di tulisan saya sebelumnya. Meskipun tulisan tersebut sudah lama sekali (kernel 2.6) tetapi prosedur pembangunan kernel Linux masih sama. Yang berbeda ya hanya versi kernelnya saja. Jangan lupa untuk membuat initrd untuk memuat driver filesystem karena konfigurasi kernel generik Slackware tidak mengandung driver filesystem. Jangan lupa juga untuk memperbarui konfigurasi boot loader (lilo.conf atau grub.cfg) supaya sampeyan dapat mem-boot kernel yang baru tersebut.

Percobaan

Saya mem-boot Slackware ke init 3 atau modus teks untuk mengecek apakah kernel dapat di-boot dengan normal atau tidak. Kernel 3.11.0-rc2 dapat saya boot dengan sukses tanpa kesalahan apapun. Saya mengecek status driver radeon dengan perintah seperti ini:

# dmesg | grep -iE "radeon|drm|dpm|power"
input: Power Button as /devices/LNXSYSTM:00/device:00/PNP0C0C:00/input/input2
ACPI: Power Button [PWRB]
input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input3
ACPI: Power Button [PWRF]
ACPI: Deprecated procfs I/F for AC is loaded, please retry with CONFIG_ACPI_PROCFS_POWER cleared
ACPI: Deprecated procfs I/F for battery is loaded, please retry with CONFIG_ACPI_PROCFS_POWER cleared
[drm] Initialized drm 1.1.0 20060810
[drm] radeon kernel modesetting enabled.
[drm] initializing kernel modesetting (PALM 0x1002:0x9802 0x103C:0x3577).
[drm] register mmio base: 0xF0400000
[drm] register mmio size: 262144
radeon 0000:00:01.0: VRAM: 384M 0x0000000000000000 - 0x0000000017FFFFFF (384M used)
radeon 0000:00:01.0: GTT: 512M 0x0000000018000000 - 0x0000000037FFFFFF
[drm] Detected VRAM RAM=384M, BAR=256M
[drm] RAM width 32bits DDR
[drm] radeon: 384M of VRAM memory ready
[drm] radeon: 512M of GTT memory ready.
[drm] GART: num cpu pages 131072, num gpu pages 131072
[drm] Loading PALM Microcode
[drm] PCIE GART of 512M enabled (table at 0x0000000000273000).
radeon 0000:00:01.0: WB enabled
radeon 0000:00:01.0: fence driver on ring 0 use gpu addr 0x0000000018000c00 and cpu addr 0xffab6c00
radeon 0000:00:01.0: fence driver on ring 3 use gpu addr 0x0000000018000c0c and cpu addr 0xffab6c0c
radeon 0000:00:01.0: fence driver on ring 5 use gpu addr 0x0000000000072118 and cpu addr 0xfa332118
[drm] Supports vblank timestamp caching Rev 1 (10.10.2010).
[drm] Driver supports precise vblank timestamp query.
radeon 0000:00:01.0: irq 46 for MSI/MSI-X
radeon 0000:00:01.0: radeon: using MSI.
[drm] radeon: irq initialized.
[drm] ring test on 0 succeeded in 1 usecs
[drm] ring test on 3 succeeded in 1 usecs
[drm] ring test on 5 succeeded in 1 usecs
[drm] UVD initialized successfully.
[drm] ib test on ring 0 succeeded in 0 usecs
[drm] ib test on ring 3 succeeded in 0 usecs
[drm] ib test on ring 5 succeeded
[drm] radeon atom DIG backlight initialized
[drm] Radeon Display Connectors
[drm] Connector 0:
[drm] LVDS-1
[drm] HPD1
[drm] DDC: 0x6430 0x6430 0x6434 0x6434 0x6438 0x6438 0x643c 0x643c
[drm] Encoders:
[drm] LCD1: INTERNAL_UNIPHY
[drm] Connector 1:
[drm] HDMI-A-1
[drm] HPD2
[drm] DDC: 0x6440 0x6440 0x6444 0x6444 0x6448 0x6448 0x644c 0x644c
[drm] Encoders:
[drm] DFP1: INTERNAL_UNIPHY
[drm] Connector 2:
[drm] VGA-1
[drm] DDC: 0x64d8 0x64d8 0x64dc 0x64dc 0x64e0 0x64e0 0x64e4 0x64e4
[drm] Encoders:
[drm] CRT1: INTERNAL_KLDSCP_DAC1
[drm] Internal thermal controller without fan control
== power state 0 ==
power level 0 sclk: 27827 vddc: 900
== power state 1 ==
power level 0 sclk: 49231 vddc: 975
== power state 2 ==
power level 0 sclk: 27827 vddc: 900
== power state 3 ==
power level 0 sclk: 27827 vddc: 900
power level 1 sclk: 49231 vddc: 975
== power state 4 ==
power level 0 sclk: 20000 vddc: 975
== power state 5 ==
power level 0 sclk: 17778 vddc: 900
[drm] Found smc ucode version: 0x00010601
switching from power state:
power level 0 sclk: 20000 vddc: 975
switching to power state:
power level 0 sclk: 27827 vddc: 900
power level 1 sclk: 49231 vddc: 975
[drm] radeon: dpm initialized
[drm] fb mappable at 0xE0378000
[drm] vram apper at 0xE0000000
[drm] size 4325376
[drm] fb depth is 24
[drm] pitch is 5632
fbcon: radeondrmfb (fb0) is primary device
radeon 0000:00:01.0: fb0: radeondrmfb frame buffer device
radeon 0000:00:01.0: registered panic notifier
[drm] Initialized radeon 2.34.0 20080528 for 0000:00:01.0 on minor 0

Sampeyan dapat melihat bahwa driver radeon dapat bekerja secara normal dan DPM berstatus aktif. Waktunya mencoba masuk ke KDE, startx, dan....

NORMAL! Desktop Effects di SystemSettings KDE menunjukkan bahwa KDE tetap menggunakan OpenGL sebagai composite engine dan Qt tetap dapat menggunakan raster engine yang artinya desktop dapat mengakses profil OpenGL dengan baik.

DPM radeon bekerja dengan baik meskipun suhu rata-rata masih lebih tinggi daripada jika menggunakan driver FGLRX (AMD Catalyst). Mungkinkah ini terkait dengan profil OpenGL di mana Mesa 9.x masih menggunakan versi 3.x sedangkan FGLRX sudah menggunakan versi 4.x? Saya tidak tahu pasti. Bagaimana dengan performa decoding video dan flash? Mari kita lihat:

Pada saat memutar video, suhu laptop naik hingga 67°C. Tetapi begitu video saya matikan, suhu langsung turun ke 65°C dan terus turun.

Berikut ini adalah hasil tes menggunakan Phoronix Test Suite (OpenBenchmarking.org):

http://openbenchmarking.org/result/1307220-FO-W41LQGEAR62

Kesimpulan

Meskipun soal adem masih kalah dengan AMD Catalyst, tetapi untuk saat ini saya sudah cukup puas dengan performa driver radeon di kernel 3.11.0-rc2. Jangan lupa bahwa driver ini masih jauh dari stabil jadi jika ada kekurangan ya wajar. Mungkin setelah kernel 3.11.0 benar-benar stabil, kondisinya akan berbeda jauh dengan sekarang. Buat rekan-rekan yang ingin mencoba fitur 3D entah dengan menjalankan game 3D di atas radeon ini, saya persilakan soalnya saya tidak punya game 3D yang bisa saya gunakan untuk mencobanya.

Selamat mencoba...