RSS

Mengoptimalkan Firefox Supaya Kompatible dengan Laptop Mode

20 Agu

http://danangdk.blog.uns.ac.id/2011/11/29/menghemat-daya-laptop-dengan-laptop-mode/

Kalau Anda sudah menggunakan laptop mode tapi harddisk laptop Anda masih terasa panas, mari memeriksa pemakaian laptop Anda. Cobalah untuk membiarkan laptop Anda menyala dan GNU/Linux dalam keadaan idle tanpa tugas apapun, karena laptop mode disetting mematikan harddisk setelah 15 detik nganggur maka setelah waktu itu seharusnya harddisk sleep seperti gambar ini

pasanglah paket hddtemp untuk menguji apakah hdparm bisa membuat harddisk Anda sleep. Perintah hdparm untuk mematikan harddisk secara manual adalah

$ sudo hdparm -Y /dev/sda

(sda adalah harddisk Anda). Lalu pakai hddtemp untuk memeriksa apakah harddisk benar-benar sleep,sebaiknya anda memakai $su sehingga ketika memanggil hddtemp sistem tidak perlu menghidupkan harddisk.

# hddtemp /dev/sda

Sewajarnya harddisk Anda akan bisa sleep.

Kalau Anda memakai peramban web maka akan terasa bahwa harddisk seakan-akan tidak bisa sleep, terasa panas dan anda bisa membuktikan dengan

$ sudo lm-profiler

bahwa firefox setiap beberapa detik membaca maupun menulis ke harddisk, inilah fungsi fsync dan fdatasync yang memaksa sistem untuk mengaktifkan harddisk, sebenarnya fungsi ini bertujuan untuk mencegah kerusakan database firefox namun jika menggunakan laptop (yang ada baterainya) fsync membuat boros baterai dan juga data-data firefox adalah temporary, jadi sebenarnya tidak perlu harus backup di harddisk.

lm-proflm-prof2

Ada dua cara untuk mengatasi persoalan di atas :

1. Membuat/memaksa browser/peramban web firefox untuk menghormati laptop mode dengan mengabaikan panggilan fsync yang memaksa sistem untuk menghidupkan harddisk dan menuliskan data-data sqlite (databasenya firefox).

2. Menjalankan firefox dari RAM disk (/dev/shm), idenya adalah apabila ada panggilan fsync dan fdatasync dari firefox , firfox akan menulis ke databasenya yang terletak di /dev/shm yang tentunya di RAM dan tidak akan membangunkan harddisk.

1. Trik yang pertama dilakukan dengan membuat sebuah pustaka yang akan menangkap panggilan fdatasync dari firefox dan melaporkan kepada firefox bahwa hal tersebut sudah dilakukan, sehingga kinerja firefox tidak terganggu dan juga laptop mode masih tetap berjalan baik.

Ada sebuah script yang harus Anda kompilasi dengan gcc untuk membuat pustaka tersebut,

#define _GNU_SOURCE
#include
#include
#include
#include

static int in_laptop_mode(void)
{
char buf[2];
int fd;
int l;
fd = open(“/proc/sys/vm/laptop_mode”, O_RDONLY);
if (fd < 0)
return 0;
l = read(fd, buf, 2);
close(fd);
if (l == 2 && buf[0] == ‘0’ && buf[1] == ‘\n’)
return 0;
else
return 1;
}

int fsync(int fd)
{
static int (*_fsync)(int);
if (!_fsync)
_fsync = dlsym(RTLD_NEXT, “fsync”);
if (!in_laptop_mode())
return _fsync(fd);
else
return 0;
}

int fdatasync(int fd)
{
static int (*_fdatasync)(int);
if (!_fdatasync)
_fdatasync = dlsym(RTLD_NEXT, “fdatasync”);
if (!in_laptop_mode())
return _fdatasync(fd);
else
return 0;
}

Lalu lakukan kompilasi dengan gcc:

$ gcc -O2 -Wall -shared -fPIC -o killsync.so killsync.c -ldl

dan jalankan firefox dari terminal dengan perintah

$ LD_PRELOAD=`pwd`/killsync.so firefox

Atau jika ingin mudah buatlah script bash dan tempelkan di destop:
$gedit firefoxlm
yang isinya

#!/bin/sh
$ LD_PRELOAD=`pwd`/killsync.so firefox
exit 0

lalu ujilah dengan hddtemp apakah harddisk sudah bisa sleep setelah 15 detik.

2. Trik yang kedua adalah dengan paket firefox yang ditambahkan sendiri bukan dari repo, Anda bisa mengunduhnya di mozilla.org berupa berkas tar.gz, ekstraklah pada suatu folder.
Sebagai contoh saya menggunakan firefox 8 dan diekstrak di /home/danang/Dokumen/firefox/. Diperlukan sebuah script bash untuk menggandakan /mengcopy folder firefox dari Dokumen ke /dev/shm (RAM disk) dan jika selesai digunakan /keluar dari firefox folder di /dev/shm tersebut akan digandakan kembali ke folder Dokumen.

#!/bin/sh
cp -r /home/danang/Dokumen/firefox/ /dev/shm
LD_PRELOAD=’pwd’~/killsync.so /dev/shm/firefox/firefox
cp -r /dev/shm/firefox /home/danang/Dokumen
exit 0

Apakah kernel menerima panggilan fsync dan fdatasync dari firefox bisa dibuktikan dengan:

$ strace -f -p `pidof firefox`

Bukti bahwa dengan trik2 ini firefox sudah dibereskan perihal urusan fsync

lm-profJika tanpa trik, lm-profiler memperlihatkan bahwa terjadi sync ke harddisk setiap beberapa detik, namun di sini selama 154 detik tidak ada fsync dan tentunya harddisk akan nganggur dan akhirnya bisa sleep.

Semoga Berguna

 
Tinggalkan komentar

Ditulis oleh pada Agustus 20, 2012 in GNU/Linux

 

Tag: ,

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

 
%d blogger menyukai ini: