程序創建時間、shell腳本和系統呼叫成本
我有一台使用 Arch Linux 和 Ubuntu (16.04) 雙啟動的機器。
我最近開始使用Kakoune 文本編輯器,並註意到它的啟動時間因我使用的作業系統而異。但是,我認為根本問題不是直接由 kakoune 引起的。
在啟動時,kakoune 會執行一堆 shell 腳本來啟用與 x11 和 tmux、git、語法高亮/顏色方案等的集成。可以禁用此功能以僅使用
-n
標誌載入“香草”編輯器。命令:
kak -e q
將啟動 kakoune,執行所有啟動腳本並立即退出。在 Arch 上:
time kak -e q
需要1 秒
time kak -n -e q
(無 shell 腳本)在20 毫秒內完成。在 Ubuntu 上:
time kak -e q
需要大約450 毫秒
time kak -n -e q
再次低於20 毫秒在修剪脂肪並刪除一些啟動腳本後,我確實看到兩個作業系統的改進與刪除的數量成正比。
我用UnixBench執行了一些基準測試,發現兩個系統之間的主要差異體現在“程序創建”和“shell 腳本”測試中。
shell 腳本測試測量每分鐘程序可以啟動並獲得一組一個、兩個、四個和八個 shell 腳本的並發副本的次數,其中 shell 腳本將一系列轉換應用於數據文件。
這是相關的輸出。“每秒循環數”中的單位越多越好:
Process creation (1 parallel copy of tests) Arch: 3,822 Ubuntu: 5,297 Process creation (4 parallel copies of tests) Arch: 18,935 Ubuntu: 30,341 Shell Scripts (1 concurrent) (1 parallel copy of tests) Arch: 972 Ubuntu: 5,141 Shell Scripts (1 concurrent) (4 parallel copies of tests) Arch: 7,697 Ubuntu: 24,942 Shell Scripts (8 concurrent) (1 parallel copy of tests) Arch: 807 Ubuntu: 2,257 Shell Scripts (8 concurrent) (4 parallel copies of tests) Arch: 1,289 Ubuntu: 3,001
如您所見,Ubuntu 系統的性能要好得多。
我已經使用不同的登錄 shell、終端仿真器、重新編譯 kakoune、刪除不需要的軟體來清理磁碟等進行了測試。我確信這是瓶頸。
**我的問題是:**我可以做些什麼來進一步調查並提高 Arch Linux 系統的性能以匹配 Ubuntu?我應該考慮調整核心嗎?
補充筆記:
- 兩個系統都使用相同類型的文件系統(ext4)
- 我傾向於更多地使用 Archlinux 系統,並且注意到性能隨著時間的推移而下降
- Arch 位於 /dev/sda1 上,約為 200GB。Ubuntu 在 /dev/sda2,~500GB。1TB 硬碟。
- 拱門
uname -a
:Linux ark 4.14.13-1-ARCH #1 SMP PREEMPT Wed Jan 10 11:14:50 UTC 2018 x86_64 GNU/Linux
- Ubuntu
uname -a
:Linux sierra 4.4.0-62-generic #83-Ubuntu SMP Wed Jan 18 14:10:15 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
謝謝
Debian 和 Ubuntu 使用 dash as
/bin/sh
,它比 Bash 快一些:$ time for x in {1..1000} ; do /bin/bash -c 'true' ; done real 0m1.894s $ time for x in {1..1000} ; do /bin/sh -c 'true' ; done real 0m1.057s
這與您的數字大致相同(按比例)。
/bin/sh
在 Debian 和 Ubuntu 中更改為 dash 而不是 Bash 很大程度上是因為性能:切換預設 shell 的主要原因是效率。bash 是一個優秀的全功能 shell。但是,與 dash 相比,它的啟動和執行速度都比較大而且速度很慢。