Welcome

Selamat Datang

Selamat Datang di blog ane moga2 ane bisa kasih sesuatu buat kalian. amin.

January 2012
S M T W T F S
« Dec    
1234567
891011121314
15161718192021
22232425262728
293031  

Penghitung Kunjungan

myspace statistics

Iklan Toko Online

Siapakah Anda

Research Blog

TripleClicks Maneh


TripleClicks


Fakta dan Sejarah Pengungsi Palestina

embedded by Embedded Video

YouTube Direkt

Menghemat Space Harddisk Virtual

Saya sudah cukup lama menggunakan GNU/Linux sebagai sistem operasi utama, namun tidak dapat disangkal bahwa untuk beberapa keperluan masih memerlukan SO Windows XP Home yang saya punya. Contohnya corel draw (dah lama juga tak menyentuh ini). Sekalipun laptop saya memiliki instalasi Windows XP Home nampaknya menyusahkan jika harus restart hanya untuk menggunakan Corel Draw, oleh karena itu saya menggunakan virtualisasi, dengan perangkat lunak Oracle’s VirtualBox. Instalasi awal harddisk virtual memakan tempat sebesar 1,5 GB, Nah seiring berjalannya waktu data yang ada dalam harddisk virtual terus bertambah dan mencapai 5,6 GB. Sedangkan di properties drive c windows xp hanya menunjukkan sebesar 3GB sekian. Berarti terjadi inefisiensi penggunaan harddisk virtual.

(to be continued …)

Kernel Terbaik, Processor Hardware Control dan Real Time

Akhirnya setelah beberapa kali gagal setup, kernel yang saya inginkan bisa dicompile, kira2 butuh 2 jam pake pentium dual core 2,8 GHz dan 2 GB RAM.

phc_rt

Asyik3. GB

GNU/Linux, Tantangan di Bidang Multimedia (Review)

Masalah Utama Pemutar Multimedia GNU/Linux

Setelah kira-kira 1 tahun saya secara eksklusif menggunakan Ubuntu Lucid Lynx banyak hal membuat saya optimis dan puas dengan kinerja Sistem Operasi GNU/Linux. Kernel yang stabil (belum pernah hang) dan performa sangat bagus. Bahkan sistem berkas ext4 yang saya pakai selalu memberi prosentase fragmentase 0,8 % ketika fsck. Namun platform yang sangat bagus ini masih banyak membutuhkan sentuhan2, terutama dalam hal multimedia. Semua kodek audio dan video nampaknya sudah bukan masalah lagi dengan GNU/Linux sekalipun terpaksa menggunakan pustaka2 yang tertutup ataupun reverse engineering yang tidak bisa disebut legal di beberapa negara. Namun yang sangat perlu diperhatikan adalah stabilitas perangkat lunak pemutar media audio maupun video. Karena saya sering menonton film maka berbagai format film, mpg, mkv, avi, flv, mp4 dsb. Sangat sering ketika memutar berkas video yang bermasalah (biasanya penggandaan dari VCD) perangkat lunak pemutar media video akan crash, tiba-tiba saja mati atau pemutarannya berhenti. Saya amati itu di Totem (Pemutar Film), VLC, GNOME Mplayer (jarang). VLC sering mengeluarkan window lagi yang isinya hitam jika menemui berkas yang rusak, seakan-akan engine dari perangkat lunak itu direset dan memulai dari awal. Tentu hal-hal seperti disebut bug atau fitur-fitur yang perlu dibenahi. Dan dalam dunia perangkat lunak terbuka setiap orang punya tanggung jawab untuk menguji apakah perangkat lunak sudah berjalan stabil sesuai yang diharapkan ataukah ada fitur-fitur baru yang perlu ditambahkan. Dalam hal ini perangkat lunak pemutar video perlu dibenahi dalam hal penanganan error dari berkas masukan.

Beberapa pemutar audio pun juga begitu, hal ini pernah saya temui di SongBird, Banshee, Rythmbox. Dan salah satu kekurangan GNU/Linux adalah belum adanya dukungan penuh terhadap komputasi yang realtime, yang amat diperlukan oleh bidang multimedia. Dukungan realtime belum ada dalam jalur pengembangan kernel utama. Semua kernel realtime yang pernah saya coba tidak kompatibel dengan perangkat lunak multimedia yang berjalan di atasnya, terutama seringnya terjadi penguncian sistem (hang). Sedangkan kernel standar tidak pernah mengalami itu. Keunggulan kernel realtime adalah responsif dan aplikasi multimedia memiliki prioritas tinggi sehingga tidak ada suara tersendat-sendat sekalipun sedang melakukan multitasking.

Nice Work

Satu-satunya pemutar video yang sukses memutar berkas video .DAT (penggandaan dari VCD) adalah gxine, salah satu front end dari framework xine. Totem adalah juga salah satu front end dari xine, dan seringkali jika menemui berkas video bermasalah maka totem akan mati dengan sendirinya. Jadi untuk memutar file gandaan dari VCD gxine sangat saya rekomendasikan. Untuk memutar VCD nampaknya VLC memiliki kualitas terbaik, player lain akan gagal untuk memutar VCD.

Beberapa perangkat lunak kompatibel dengan laptop mode, jadi harddisk tidak perlu menjadi panas kalau hanya digunakan untuk menonton film. Fitur ini saya temui kalau menggunakan pemutar berbasis xine seperti xine-ui, totem atau gxine. Sedangkan mplayer perlu dibenahi juga supaya kompatibel dengan laptop mode. Sebab harddisk tidak pernah menjadi istirahat kalau pakai mplayer dan semua front endnya.

Dalam hal kualitas gambar semuanya bagus apalagi dengan adanya post processing, GNOME Mplayer misalnya. Deinterlacing dan fitur-fitur yang memperindah tampilan video nampaknya sudah berjalan semestinya. Urusan suara juga OK.

Dari kedua framework, xine dan mplayer dalam hal kualitas saya rasa mplayer lebih baik.

Semoga dunia perangkat lunak terbuka terus memperbaiki kualitas perangkat lunaknya sehingga bisa membuktikan diri sebagai pemecahan komputasi bagi semua orang.

Pamer Ubuntu (Part 1)

embedded by Embedded Video

YouTube Direkt

embedded by Embedded Video

YouTube Direkt

Mengoptimalkan Firefox Supaya Kompatible dengan Laptop Mode

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

PiTiVi, Pengolah Video yang Bagus

Satu-satunya perangkat lunak pengolah video yang sukses sampai render di GNU/Linux. Saya sudah mencoba kdenlive, avidemux, kino, openshot semuanya masih mengecewakan. PiTiVi sangat stabil dan dibuat dengan pustaka GTK+ jadi sangat kompatible dengan GNOME (Ubuntu). Kdenlive dan OpenShot tidak terlalu cocok di GNOME.
pitivi

(To Be Continued…)

Menghemat Daya Prosesor dengan Undervolting (Windows dan GNU/Linux)

Kalau Anda pengguna laptop/notebook tentu Anda sangat memperhatikan supaya baterai laptop Anda awet dan tidak mudah drop. Salah satu penyebab baterai drop adalah pemakaian daya yang besar misalnya maen game, rendering dan pekerjaan-pekerjaan lain yang menyebabkan siklus pengisian baterai bisa beberapa kali dalam satu hari.

Artikel ini akan membahas trik untuk menghemat konsumsi daya prosesor laptop Anda. Menurunkan frekuensi prosesor adalah cara yang umum untuk menghemat daya dan dengan perilaku ondemand frekuensi maka besarnya frekuensi akan disesuaikan dengan beban kerja prosesor jadi ketika sedang tidak banyak melakukan pekerjaan laptop Anda akan menghemat daya yang lumayan. Nah masih ada satu cara lagi untuk melakukan efisiensi penggunaan daya, yaitu undervolting, sebuah metode menurunkan tegangan kerja prosesor sehingga untuk melakukan tugas yang sama akan diperlukan daya yang lebih kecil. Daya (P) biasanya dihubungkan oleh tegangan (V) dan arus (I). Jadi kalo ingin menghemat daya bisa dilakukan dengan menurunkan penggunaan arus maupun tegangan. Arus jauh lebih sulit diatur sebab melibatkan arsitektur internal prosesor sedangkan tegangan bisa diatur dari luar terutama karena fitur-fitur penghemat daya yang menurunkan frekuensi juga menurunkan tegangan dan ternyata penurunan tegangan ini masih bisa diatur oleh pengguna supaya lebih rendah daripada spesifikasi pembuat prosesor tanpa ada (minim) efek samping yang berarti.

Misal core 2 duo T5550 dengan frekuensi minimal 1 GHz seharusnya berjalan pada 0,981 volt namun ambang ini bisa diturunkan ke ambang paling bawah, yaitu 0,738 volt dengan kinerja dan kestabilan yang sama. Dan titik-titik settingan yang lain bisa juga diatur.

Di sini saya menggunakan distro Ubuntu Lucid Lynx. Karena kernel GNU/Linux adalah kernel monolitik maka setiap dukungan fitur perangkat keras harus disediakan oleh kernel dan tidak bisa ditambahin dari luar kernel, sekalipun untuk menjalankan fitur tersebut diperlukan modul-modul tambahan. Dan kernel generik bawaan distro tidak memiliki fitur ini, sebab untuk memiliki fitur ini kernel harus dikompilasi dengan setting sebagai berikut:

CONFIG_CPU_FREQ_STAT=m
CONFIG_X86_ACPI_CPUFREQ=m
CONFIG_X86_POWERNOW_K8=m
CONFIG_X86_SPEEDSTEP_CENTRINO=m
CONFIG_X86_P4_CLOCKMOD=m

Kalau Anda punya niat, waktu dan kemampuan untuk mengkompilasi kernel sendiri (http://danangdk.blog.uns.ac.id/2011/06/24/tutorial-kompilasi-kernel-linux/) silakan membuat racikan kernel PHC sendiri namun jika Anda ingin lebih mudah, Anda bisa menggunakan paket pre-kompilasi yang sudah ada dalam PPA (Personal Package Archive) yang disediakan oleh David Gnedt dengan cara sebagai berikut:

1. Tambahkan lumbung perangkat lunak PHC dengan mengetikkan perintah berikut di terminal:

$ sudo add-apt-repository ppa:linux-phc/ppa

lalu lakukan pemutakhiran:

$ sudo apt-get update

2. Lakukan instalasi kernel PHC dengan perintah ini, atau bila menggunakan synaptic Anda bisa memilih kernel2 PHC yang lain :

$ sudo apt-get install linux-generic-phc linux-headers-generic-phc

3. Lakukan reboot lalu cek kernel apa yang dipakai:

$ uname -r

pada laptop saya akan menghasilkan:

2.6.32-33-generic-pae-phc

atau juga bisa menggunakan GNOME System Monitor

phc_gsm

Nah, sekarang kernel telah mendukung PHC, Processor Hardware Control.

Kalau bukan kernel PHC yang dipakai kemungkinan pemuat boot perlu diset (LILO, GRUB, GRUB2 , BURG)

untuk GRUB, silakan perintahkan:

$sudo update-grub

lalu jika ingin kernel ini Anda pakai terus silakan ubah file konfigurasi GRUB:

$sudo gedit /etc/default/grub

ubah “GRUB_DEFAULT=0″ ke nilai kernel yang ada nama PHC di bagian bawah.

Langkah selanjutnya adalah memasang modul-modul PHC,

4. Unduh berkas sumber dari tautan berikut:
http://www.linux-phc.org/forum/viewtopic.php?f=13&t=2
Unduh sesuai kernel distro yang Anda pakai sebelumnya supaya tidak ada masalah kompabilitas dengan perangkat lunak lain yang sudah dipasang.

5. Buka berkas kompresi tersebut dan dari folder tersebut bukalah dengan terminal:

$ make prepare
$ make
$ sudo make install

jika sudah selesai, periksalah jika modul sudah terpasang:
$ cat /sys/devices/system/cpu/cpu0/cpufreq/phc_default_vids
kalau punya saya: 43 29 19, yang berarti
Frekuensi 1,8 GHz 43 => 1,250 volt,
Frekuensi 1,33 GHz 29 => 1,058 volt,
Frekuensi 1 GHz 19 => 930,2 volt.

6. Lakukan pemeriksaan sampai batas berapa voltase bisa diturunkan:
Pakailah script berikut: http://openmindedbrain.info/wp-content/uploads/2010/05/intel-phc-undervolt.bash

#!/bin/bash
# Script downloaded from http://www.openmindedbrain.info
#
# http://www.linux-phc.org/

# #
# Below just some useful functions #
# #

# Text Colors:
esc=”33["
tc000="${esc}30m"
tcf00="${esc}31m"
tc0f0="${esc}32m"
tcff0="${esc}33m"
tc00f="${esc}34m"
tcf0f="${esc}35m"
tc0ff="${esc}36m"
tcfff="${esc}37m"
tcRst="${esc}0m"
# Background Colors:
bc000="${esc}40m"
bcf00="${esc}41m"
bc0f0="${esc}42m"
bcff0="${esc}43m"
bc00f="${esc}44m"
bcf0f="${esc}45m"
bc0ff="${esc}46m"
bcfff="${esc}47m"

check () {
s=$?
if [ "$s" = "0" ]; then
printf “$tc0f0> Success!$tcRst\n”
else
printf “$tcf00> PhaiL!!!$tcRst\n$tcff0> Smash your head on keyboard to continue.$tcRst\n”
read -n 1 -s > /dev/null
fi
return $s
}

silent_check () {
s=$?
return $s
}

confirm () {
loop=1
while [ "$loop" = "1" ]; do
printf “Do you want to continue? [Y/n/?] ”
read -n 1 -s answer
case “$answer” in
“Y” | “y” | “” )
printf “${tc0f0}Yes$tcRst\n”
loop=0
return 0
;;
“?” )
printf “${tc00f}?$tcRst\nIt’s really just a ${tc0f0}Yes$tcRst or ${tcf00}No$tcRst >:-[\n"
;;
"N" | "n" )
printf "${tcf00}No$tcRst\n"
loop=0
return 1
;;
* )
printf "${tcff0}$answer$tcRst\n"
;;
esac
done
}

confirm_section () {
confirm || {
printf "$tc00f> Skipping entire section.$tcRst\n"
exit 1
}
}

backup () {
printf "Creating backup ${file}~\n"
sudo cp -a "$file" "${file}~"
check
return $?
}

file_check () {
s=0
if [[ "$create" && ! -f "$file" ]]; then
create=
printf ” Create $file\n”
printf “$content” | sudo tee “$file”
check || return $?
s=1
fi
if [[ "$owner" && "`stat -c %U:%G \"$file\"`" != "$owner" ]]; then
printf ” Change ownsership of $file\n”
sudo chown “$owner” “$file”
check || return $?
s=1
fi
if [[ "$perm" && "`stat -c %a \"$file\"`" != "$perm" ]]; then
printf ” Change permissions of $file\n”
sudo chmod “$perm” “$file”
check || return $?
s=1
fi
if [ "$s" = "0" ]; then
printf “${tc00f}> SKIPPED:$tcRst Already applied\n”
fi
return 0
}

pattern_count () {
awk “/$pattern/{n++}; END {print n+0}” “$file”
}
line_count () {
awk “/$line/{n++}; END {print n+0}” “$file”
}

pattern_confirm () {
if [ ! -f "$file" ]; then
printf “${tcff0}> WARNING:$tcRst Could not find $file\n”
return 1
fi
if [[ ( "$pattern" && "`pattern_count`" -gt "0" ) || ( ! "$pattern" && "`line_count`" = "0" ) ]]; then
printf “${tc00f}> SKIPPED:$tcRst Already applied\n”
return 1
fi
return 0
}

append () {
printf “Appending to $file\n”
printf “$append” | sudo tee -a “$file” > /dev/null
check
return $?
}

replace () {
printf “Scanning $file\n”
result=”`awk \”/$line/{sub(/$search/, \\\”$replace\\\”)}; {print}\” \”${file}\”`”
check &check
return $?
}

confirm_append () {
pattern_confirm && confirm && append
return $?
}

confirm_replace () {
pattern_confirm && confirm && replace
return $?
}

install_confirm () {
printf “\nInstall: $tc0f0$pkgs$tcRst\n”
dpkg -l $pkgs > /dev/null 2>&1 &> SKIPPED:$tcRst Already installed\n”
return 0
}
}
confirm && sudo aptitude –without-recommends install $pkgs
return $?
}

purge_confirm () {
printf “\nUninstall (purge): $tcf00$pkgs$tcRst\n”
dpkg -l $pkgs 2> /dev/null | grep -q “^i” > /dev/null || {
printf “${tc00f}> SKIPPED:$tcRst None installed\n”
return 0
}
confirm && sudo aptitude –without-recommends purge $pkgs
return $?
}

# #
# End of the useful functions #
# #

# #
# #
# #
# Below the actual code #
# #
# #
# #

above_vids=4
burn_wait=93

printf “\n
This script will optimize your voltages at every speed setting
by systematically lowering them while stressing the CPU.
Each voltage will be turned down until your system crashes, and the final
setting for that voltage will be $tc0f0$above_vids$tcRst VIDs above that to \”ensure\” stability.

WARNING:
This script will crash your system as many times as there are VIDs to tweak.
You might destroy your hardware, break laws and/or die in vain if you continue.\n\n”
confirm || exit 0

num_cpus=0
cpu0freq=/sys/devices/system/cpu/cpu0/cpufreq
cpusfreq=”"
while [ [1] ]; do
cat /sys/devices/system/cpu/cpu$num_cpus/cpufreq/phc_default_vids > /dev/null 2>&1
silent_check || break
cpusfreq+=”/sys/devices/system/cpu/cpu$num_cpus/cpufreq ”
let num_cpus++
done

if [ $num_cpus = 0 ]; then
printf “$tcf00> ERROR:$tcRst No CPU core capable of undervolting found.\n”
exit 1
fi

printf “$tc0f0>Found $num_cpus CPU cores.$tcRst\n”
if [ $num_cpus -gt 1 ]; then
printf “Multiple cores found, the script will use the
same voltages for all cores, this means final
setting will be $tc0f0$above_vids$tcRst VIDs above the weakest core.\n”
fi

printf “\nInstall required packages.\nWill use burnMMX (part of cpuburn package) to stress CPU.”
pkgs=”cpuburn” # cpufrequtils
install_confirm

def_vids=`cat $cpu0freq/phc_default_vids`
c=0
for i in $def_vids; do
let c++
def_vids_arr[c]=$i
done

if [ -f phc_tweaked_vids ]; then
printf “\nLoad VIDs from ‘phc_tweaked_vids’ file\n”
cur_vids=`cat phc_tweaked_vids`
else
printf “\nRead default VIDs.\n”
cur_vids=”$def_vids”
fi

count_phc=`printf “$def_vids” | awk ‘{print NF}’`
count_tweak=`printf “$cur_vids” | awk ‘{printf NF}’`

if [ "$count_phc" != "$count_tweak" ]; then
printf “$tcf00> ERROR:$tcRst Wrong VID count!\n”
exit 1
fi
let count_phc–
check || {
printf “$tcf00> ERROR:$tcRst Number of VIDs is zero!\n”
exit 1
}

if [[ -f phc_tweaked_vids && -f phc_cur_pos ]]; then
printf “Load position from ‘phc_cur_pos’\n”
cur_pos=`cat phc_cur_pos`
let ++cur_pos
check || exit 1
else
printf “Reset position to 0.\n”
cur_pos=0
fi

printf “Read available frequencies.\n”
freqs=`cat $cpu0freq/scaling_available_frequencies`

c=0
for i in $freqs; do
let c++
freq[c]=$i
done
if [ "$c" != "$count_tweak" ]; then
printf “$tcf00> ERROR:$tcRst Number of frequencies ($c) and VIDs ($count_tweak) do not match!\n”
exit 1
fi
check

#printf “$cur_vids” | awk ‘{for (i=1; i phc_tweaked_vids
printf “$cur_pos” > phc_cur_pos

if [ "$cur_pos" -gt "$count_phc" ]; then
printf “\nAll VIDs have been tweaked!
Results are in the file ‘phc_tweaked_vids’ - use with care.\n”
printf “\nAll done! - Have a nice day.\n”
exit 0
fi

if [ "x$vid_last" != "x" ]; then
if [ "$vid_next" -gt "${vid[$cur_pos]}” ]; then
printf “\nNext VID higher than last - copying.”
vid[$(( cur_pos + 1 ))]=${vid[$cur_pos]}
fi
fi
let ++cur_pos

printf “\nSwitch to ‘userspace’ scaling governor.\n”
for i in $cpusfreq; do
printf “userspace” | sudo tee $i/scaling_governor > /dev/null
done
check || exit 1

printf “Set frequency to ${freq[$cur_pos]}.\n”
for i in $cpusfreq; do
printf “${freq[$cur_pos]}” | sudo tee $i/scaling_setspeed > /dev/null
done
check || exit 1

printf “Run burnMMX.\n”
pkill burnMMX
for i in $cpusfreq; do
burnMMX &
printf ” PID: $!\n”
done

recover () {
printf “\n\nRecovering CPU.\n”
pkill burnMMX
for i in $cpusfreq; do
printf “$def_vids” | sudo tee $i/phc_vids > /dev/null
printf “ondemand” | sudo tee $i/scaling_governor > /dev/null
done
printf “\nRun this script again to continue the optimization.\n”
}

printf “\n—–\nStart testing.\n”
confirm || {
recover
exit 1
}

while [[ 1 ]]; do
let vid[cur_pos]–
if [ "${vid[$cur_pos]}” -lt “0″ ]; then
printf “\n\nThe lowest acceptable VID is 0.”
recover
exit 0
fi

printf “\nDefault VIDs: $def_vids
Current VIDs: $tc0f0$vids_done$tc0f0$vid_last$tcf00${vid[$cur_pos]}$tcRst$vids_rem
Testing VID: ${vid[$cur_pos]} ($(( ${vid[$cur_pos]} * 16 + 700)) mV)\n”

printf “$vids_done$vid_last${vid[$cur_pos]}$vids_rem” > phc_tweaked_vids
sync

for i in $cpusfreq; do
printf “$vids_done$vid_last${vid[$cur_pos]}$vids_rem” | sudo tee $i/phc_vids > /dev/null
done

c=0
while [ $c -lt $burn_wait ]; do
burnMMX_instances=`ps aux | grep [b]urnMMX | wc -l`
if [ $burnMMX_instances -ne $num_cpus ]; then
printf “\nburnMMX instances different than the CPU cores number. (Maybe one crashed)!”
recover
exit 0
else
printf “.”
if [ $c -eq 30 -o $c -eq 61 ]; then
printf “\n”
fi
sleep 0.5
let c++
fi
done
done

simpan sebagai intel-phc-undervolt.bash (terserah namanya, akhirannya bash) dan beri penanda ijin untuk dapat dieksekusi sebagai program:

$ chmod +x intel-phc-undervolt.bash

lalu jalankan script tersebut.

$ ./intel-phc-undervolt.bash

Untuk prosesor T5550 script ini akan menghasilkan 43 22 4, terlihat bahwa itu bersesuaian dengan tegangan 1,250 volt, 0,9686 dan 0,738. Script ini secara otomatis akan menambahkan nilai 4 dari nilai yang lolos uji untuk memastikan kestabilan prosesor dalam jangka panjang. Namun saya tidak puas dengan nilai tegangan untuk 1,8 GHz karena tetap sama sedangkan di windows bisa sampai 1,1 volt secara manual, lalu nilai ini saya ubah sebagai berikut 33 20 4, yang bersesuaian dengan 1,109 volt, 0,943 dan 0,7384 volt.

nah, nilai voltage id ini dimasukkan ke rc.local

$ sudo gedit /etc/rc.local

tambahkan baris berikut di bagian bawah

echo “33 20 4″ > /sys/devices/cpu/cpu0/cpufreq/phc_vids

echo “33 20 4″ > /sys/devices/cpu/cpu1/cpufreq/phc_vids

lalu restart.

Hasilnya ? Biasanya prosesor memiliki suhu 67-70 ‘ C sekarang hanya 45-50 ‘C, penurunan 15 ‘ bagus sekali kan,

kalo di ruangan AC: HDD 33′C, ACPI 48′C, CPU 39′C dan nVidia 49′C

nvidia-dingin1