Linux 設定 vm.swappiness 調整 SWAP 使用時機

Linux SWAP 的設定建議值,在最早的書籍、文件教學都是建議設定為記憶體(RAM)的兩倍~

不過隨著記憶體越來越大,反而就建議 SWAP 的設定值就不要太大,畢竟吃到 SWAP 整台 機器的 IO 都會重不少~

原本想法應該是,記憶體使用滿,系統才會去使用到 SWAP,不過,仔細看看常常都是記憶體還很多,卻已經開始吃 SWAP,到底是怎麼回事呢?

閱讀全文〈Linux 設定 vm.swappiness 調整 SWAP 使用時機〉

Linux Kernel 4.20 修正 Intel CPU Bug 造成的效能影響

Linux Kernel 4.20 修正了 Intel CPU 的多個 Bug,卻造成 CPU 效能嚴重下跌,某些效能甚至跌 30%。

閱讀全文〈Linux Kernel 4.20 修正 Intel CPU Bug 造成的效能影響〉

好文:Windows Kernel 的架構設計說明 - 2018

微軟 (Microsoft) 的 Windows 10 支援 x86、x64、ARM 和 ARM64 的架構,而且能在桌機、手機、Server 都可以執行,它的架構是如何設計,讓所有作業系統的模組能夠最大化的重複利用呢?

Windows Kernel 團隊在官方部落格有將作法公開,有興趣可以參考看看~

閱讀全文〈好文:Windows Kernel 的架構設計說明 - 2018〉

Linux Kernel 4.8 dmesg 讀取操作不被允許的解法

Debian stretch 目前的 Linux kernel 是 4.8 版,user 直接執行 dmesg 已經不被允許,會有下述訊息:

dmesg: read kernel buffer failed: 此項操作並不被允許

需要 root 或使用 sudo 才能讀取,例如:

  • sudo dmesg
  • sudo dmesg -T
  • 註:話說 /var/log/dmesg 一般 user 也不能讀取就是了

想要讓一般 user 可以正常執行 dmesg,可於 sysctl 設定下述參數即可:

  • kernel.dmesg_restrict = 0

註:0 是一般 user 可以直接使用,1 是一般 user 不允許操作

設定步驟

  1. vim /etc/sysctl.conf # 加入下述
    kernel.dmesg_restrict = 0
  2. sudo sysctl -p

詳見:Kernel.txt,下述摘錄自此篇:

dmesg_restrict:

This toggle indicates whether unprivileged users are prevented from using dmesg(8) to view messages from the kernel's log buffer.
When dmesg_restrict is set to (0) there are no restrictions. When dmesg_restrict is set set to (1), users must have CAP_SYSLOG to use dmesg(8).

The kernel config option CONFIG_SECURITY_DMESG_RESTRICT sets the default value of dmesg_restrict.

Linux 於 CLI 強制遠端重新開機

前陣子有台機器遇到 systemd 有問題(註:Linux systemd 取消卡住的工作),但是問題找不出來,想說要找時間重新開機解決,沒想到連重新開機都是個大問題。

  • 註1:此篇環境為 Debian Linux jessie
  • 註2:機器在遠端才需要使用此篇的強制重新開機的命令,不然直接手動強迫關機在開機就好

閱讀全文〈Linux 於 CLI 強制遠端重新開機〉

Linux 4.0 引入 更新 Kernel 不需重開機的功能

Linux 更新 Kernel 最麻煩的地方就是需要重新開機,但是 Server 要重新開機是一件很複雜的事情,平常在跑的服務不能停,想重新開機都得要另外安排時間,所以就會需要找備援機器來替代,達到 0 downtime。

Linux 4.0 以後,這個問題應該就可以盡量避免了,之後更新 Kernel 就不需要重新開機囉~ (更換硬體應該還是會需要重開機)

註:不過如果機器沒事的話,偶爾還是可以重開機看看,避免難得重開確開不了機的糗狀。 XD

閱讀全文〈Linux 4.0 引入 更新 Kernel 不需重開機的功能〉

ext4 於某些 3.4~3.6 Kernel 會有資料遺失問題 - 2012

ext4 是 Linux 的其中一種檔案系統格式, 這幾年我也都是使用此檔案格式~

但是最近 ext4 有個新的 patch 會造成在 3.4.14, 3.4.15, 3.5.7, 3.6.2, 3.6.3 的 Kernel 版本造成資料遺失的問題 (發生常見於: IO重、Reboot頻繁、常常 Mount / Unmount), 目前 ext4 開發者正在努力修復此 Bug.

  • uname -r # 檢查看看自己使用的 Kernel 吧~ 🙂

註: Ubuntu 12.10 目前使用的是 3.5.0-17-generic 閱讀全文〈ext4 於某些 3.4~3.6 Kernel 會有資料遺失問題 - 2012〉