Power Management Linux
Halo semua, dalam kesempatan kali ini saya akan menuliskan artikel berseri mengenai hal-hal yang saya lakukan setelah menginstall linux. Dalam artikel ini beberapa pengaturan seputar kernel dapat berbeda dengan perangkat yang saya gunakan dan perangkat yang pembaca gunakan. Namun secara umum beberapa konfigurasi yang saya gunakan bisa di terapkan oleh para pembaca.
Berikut ini merupakan spesifikasi yang saya gunakan sebagai perangkat harian saya.
Details Spesifications
Info Value OS Manjaro Desktop Environtment KDE Plasma Device Host Lenovo Ideapad 110-14isk Processor Intel i3-6100u @2.30Ghz GPU I Intel HD 520 GPU II Radeon R5 M430 Disk Storage I SSD 128 GB Disk Storage II HDD 1TB
Bagian Pertama {Cari mirror tercepat}
Sebelum memulai merubah tampilan yang biasanya saya gunakan, saya perlu mengupdate semua package yang saya gunakan dan mencari mirror server terdekat, biasanya untuk mirror server ini selain menggunakan yang ada di Indonesia seperti Datautama saya menggunakan mirror server singapore, umumnya distribusi terkenal banyak yang sudah di mirrorkan ke server singapore ini. Dan nilai tambahnya adalah hampir semua provider Internet lokal memiliki full akses speed ke repository Singapore ini. Oleh karena itu saya menyarankan menggunakan repository Singapore ini sebagai main repo saya, kekurangannya terkadang repo-repo mirror ini menggunakan metode partial update sehingga kesan bleeding edge atau up-to-date terhadap upstream agak tertinggal, dikarenakan saya menggunakan manjaro, maka saya menggunakan sintaks berikut untuk mengeset repository mirror yg saya gunakan, yaitu Indonesia dan Singapore :
sudo pacman-mirrors -c Indonesia,Singapore
namun beberapa rekomendasi lain bisa menggunakan searching fastest server,
sudo pacman-mirrors -f 10
script ini akan mencari 10 server tercepat dan terupdate, jika repo lokal seperti Singapore atau Indonesia memiliki speed akses paling cepat namun masih tertinggal versi update nya terhadap server lain maka yang dipilih tetap yang paling terupdate walaupun lebih lambat. Dan bagi pengguna distribusi selain manjaro dapat menyesuaikan syntax diatas dengan membaca dokumentasi resmi tentunya XD.
Bagian Kedua {Power Management}
Dibagian ini saya akan menjelaskan beberapa langkah untuk menghemat battery, cara ini mungkin tidak 100% berhasil di semua perangkat.
cara ini butuh perhatian khusus dan baca dengan teliti, kesalahan yang terjadi akibat pembaca tidak teliti dengan langkah-langkah yang diberikan.
Install Kernel Terbaru.
Biasanya setelah melakukan update, kernel akan diperbaharui. Untuk distribusi tertentu mungkin butuh instalasi secara manual. Untuk Distribusi manjaro dapat memanfaatkan fitur mhwd
untuk kernel berlabel LTS:
sudo mhwd-kernel -i linux414
atau
sudo mhwd-kernel -i linux419
Langkah ini bergantung pada distribusi apa yang anda gunakan, umumnya kernel LTS menjadi pilihan untuk distribusi-distribusi yang mementingkan kestabilan.
Install Microcode CPU
Biasanya secara otomatis OS akan mendeteksi cpu yang digunakan oleh pengguna. Baik yang menggunakan AMD ataupun Intel. Jika belum yakin pastikan pada software manager anda bahwa package microcode sudah terinstall dengan baik. Cara ini dilakukan agar hardware yang anda gunakan dapat didukung dengan baik oleh kernel.
Kernel Parameter
Cara ini bukan untuk pengguna awam, jika anda merasa awam baca dengan teliti semua referensi yang saya berikan di bawah dan pastikan kembali spesifikasi hardware yang anda gunakan sama dengan paramter yang anda gunakan
cek parameter apa saja yang dapat di include kan pada configurasi grub anda, sebagai contoh untuk modul i915 yaitu untuk pengguna intel dan integrated graphic intel.
modinfo i915 | grep '^parm'
parm: modeset:Use kernel modesetting [KMS] (0=disable, 1=on, -1=force vga console preference [default]) (int)
parm: enable_dc:Enable power-saving display C-states. (-1=auto [default]; 0=disable; 1=up to DC5; 2=up to DC6) (int)
parm: enable_fbc:Enable frame buffer compression for power savings (default: -1 (use per-chip default)) (int)
parm: lvds_channel_mode:Specify LVDS channel mode (0=probe BIOS [default], 1=single-channel, 2=dual-channel) (int)
parm: panel_use_ssc:Use Spread Spectrum Clock with panels [LVDS/eDP] (default: auto from VBT) (int)
parm: vbt_sdvo_panel_type:Override/Ignore selection of SDVO panel mode in the VBT (-2=ignore, -1=auto [default], index in VBT BIOS table) (int)
parm: reset:Attempt GPU resets (0=disabled, 1=full gpu reset, 2=engine reset [default]) (int)
parm: vbt_firmware:Load VBT from specified file under /lib/firmware (charp)
parm: error_capture:Record the GPU state following a hang. This information in /sys/class/drm/card<N>/error is vital for triaging and debugging hangs. (bool)
parm: enable_hangcheck:Periodically check GPU activity for detecting hangs. WARNING: Disabling this can cause system wide hangs. (default: true) (bool)
parm: enable_ppgtt:Override PPGTT usage. (-1=auto [default], 0=disabled, 1=aliasing, 2=full, 3=full with extended address space) (int)
parm: enable_psr:Enable PSR (0=disabled, 1=enabled) Default: -1 (use per-chip default) (int)
parm: alpha_support:Enable alpha quality driver support for latest hardware. See also CONFIG_DRM_I915_ALPHA_SUPPORT. (bool)
parm: disable_power_well:Disable display power wells when possible (-1=auto [default], 0=power wells always on, 1=power wells disabled when possible) (int)
parm: enable_ips:Enable IPS (default: true) (int)
parm: fastboot:Try to skip unnecessary mode sets at boot time (default: false) (bool)
parm: prefault_disable:Disable page prefaulting for pread/pwrite/reloc (default:false). For developers only. (bool)
parm: load_detect_test:Force-enable the VGA load detect code for testing (default:false). For developers only. (bool)
parm: force_reset_modeset_test:Force a modeset during gpu reset for testing (default:false). For developers only. (bool)
parm: invert_brightness:Invert backlight brightness (-1 force normal, 0 machine defaults, 1 force inversion), please report PCI device ID, subsystem vendor and subsystem device ID to dri-devel@lists.freedesktop.org, if your machine needs it. It will then be included in an upcoming module version. (int)
parm: disable_display:Disable display (default: false) (bool)
parm: mmio_debug:Enable the MMIO debug code for the first N failures (default: off). This may negatively affect performance. (int)
parm: verbose_state_checks:Enable verbose logs (ie. WARN_ON()) in case of unexpected hw state conditions. (bool)
parm: nuclear_pageflip:Force enable atomic functionality on platforms that don't have full support yet. (bool)
parm: edp_vswing:Ignore/Override vswing pre-emph table selection from VBT (0=use value from vbt [default], 1=low power swing(200mV),2=default swing(400mV)) (int)
parm: enable_guc:Enable GuC load for GuC submission and/or HuC load. Required functionality can be selected using bitmask values. (-1=auto, 0=disable [default], 1=GuC submission, 2=HuC load) (int)
parm: guc_log_level:GuC firmware logging level. Requires GuC to be loaded. (-1=auto [default], 0=disable, 1..4=enable with verbosity min..max) (int)
parm: guc_firmware_path:GuC firmware path to use instead of the default one (charp)
parm: huc_firmware_path:HuC firmware path to use instead of the default one (charp)
parm: dmc_firmware_path:DMC firmware path to use instead of the default one (charp)
parm: enable_dp_mst:Enable multi-stream transport (MST) for new DisplayPort sinks. (default: true) (bool)
parm: enable_dpcd_backlight:Enable support for DPCD backlight control (default:false) (bool)
parm: enable_gvt:Enable support for Intel GVT-g graphics virtualization host support(default:false) (bool)
untuk pengguna graphics card selain intel, dapat menyesuaikan perintah pengecekan , sebagai contoh untuk amd dapat menggunakan radeon atau amdgpu sebagai support terbaru untuk driver amd dan nvidia graphics card dapat menggunakan nouveau.
selanjutnya backup grub config agar bila terjadi sesuatu yang tidak diinginkan dapat di kembalikan seperti semula.
sudo cp /etc/default/grub /etc/default/grub.bak
sudo nano /etc/default/grub
cari bagian ,
GRUB_CMDLINE_LINUX_DEFAULT=""
lalu isikan sebagai berikut, wiki archlinux
pilih opsi dimulai dari yang standar, diikuti setelahnya jika terdapat masalah
- Standar Grub Flag
acpi_osi=Linux acpi=force acpi_enforce_resources=lax
- Untuk beberapa tombol fn yang tidak berfungsi
acpi_osi=Linux acpi=force acpi_enforce_resources=lax drm.vblankoffdelay=1 acpi_backlight=vendor
untuk laptop yang sudah support uefi dan di produksi pada tahun 2011 keatas tambahkan syntax berikut setelah acpi_osi=Linux
acpi_osi='!Windows 2012'
beberapa model laptop uefi dapat juga mengganti dengan syntax berikut,
acpi_osi=! acpi_osi='Windows 2015'
atau juga ,
acpi_osi=! acpi_osi="Windows 2009"
referensi :
- Intel Early Kernel Mode Setting untuk module i915.
pada file /etc/mkinitcpio.conf cari bagian MODULES
MODULES=(i915)
Lalu, regenerate grub.
sudo mkinitcpio -P
untuk pengguna ubuntu dan turunannya cukup dengan syntax berikut tanpa harus menambahkan MODULES
,
sudo update-grub
untuk pengguna intel, tambah syntax berikut pada GRUB_CMDLINE_LINUX_DEFAULT=""
i915.modeset=1
- Sembunyikan pesan systemd
Terkadang saat prosesi booting, Akan tampil pesan log systemd , hal ini bagi saya pribadi sangat menggangu, untuk menyembunyikan pesan ini tambahkan pada GRUB_CMDLINE_LINUX_DEFAULT="" syntax berikut, rd.udev.log-priority=3 loglevel=3
rd.udev.log-priority=3 loglevel=3
- disable patch spectre {optional}
Beberapa waktu lalu kita dikejutkan oleh bug cpu bernama spectre, bagi dunia os baik windows,mac, linux, bsd hal ini mengejutkan dan sempat membuat geger. Para pengembang kernel linux khususnya sudah membuat patch namun hal ini berefek pada penurunan performance. Kita bisa mengignore patch tersebut dengan menambahkan syntax berikut pada GRUB_CMDLINE_LINUX_DEFAULT="" ,
nopti spectre_v2=off
terakhir install package TLP dan Thermald,
- Install TLP
sudo pacman -S --needed tlp tlp-rdw iw smartmontools ethtool x86_energy_perf_policy
sesuaikan dengan distribusi yang anda gunakan.
- Install ThermalD (khusus processor Intel yang support P-STATE Govenor)
sebelum menginstall pastikan lm_sensors terinstall dan terkonfigurasi,
sudo pacman -S lm_sensors && sudo sensors-detect
install thermald
sudo pacman -S thermald --noconfirm --needed
aktivasi setiap memulai os,
sudo systemctl enable thermald && \
sudo systemctl start thermald
terkahir buat config grub lagi dan update grub.
sudo mkinitcpio -P && sudo update-grub
Sehingga untuk hasilnya pada file /etc/default/grub
menjadi,
...
GRUB_CMDLINE_LINUX_DEFAULT="quiet acpi_osi=Linux acpi_osi=! acpi_osi='Windows 2009' loglevel=3 i915.modeset=1 ipv6.disable=1 rd.udev.log_priority=3 acpi=force acpi_enforce_resources=lax pcie_aspm=force nopti spectre_v2=off"
...
untuk artikel selanjutkan saya akan membahas mengenai konfigurasi tampilan linux.
all reference :