工作站使用小技巧 Tips for Workstation Usage¶
- 在使用工作站前,請詳閱工作站使用規範。
- 查看工作站狀態
- 本系目前共有 ws1~ws5, meow1~meow2 等工作站,你可以在 monitor.csie.ntu.edu.tw 查看各台工作站當前之狀態(CPU, memory, swap, e.t.c.),決定你要使用哪一台。
- 在 monitor.csie.ntu.edu.tw 中,你也可以查看目前工作站安裝的套件列表;如果有任何套件上的需求,歡迎寄信至工作站管理團隊(ta217@csie.ntu.edu.tw)詢問。
- 善用 /tmp2
- 本系所有工作站都提供了 /home 與 /tmp2 兩個檔案系統供使用者儲存資料;其中 /home 是所有工作站共用的 NFS,i.e. 在 /home 做的操作會在所有工作站間同步,而 /tmp2 是每台工作站本機的儲存空間,提供使用者儲存大量資料。
- 由於 NFS 效率較差,且家目錄配額有限,如果有儲存大量資料,跑大量 I/O 的程式,或者不需在工作站間同步的使用需求,建議你多加利用 /tmp2 以達到更好的使用效能。
- 使用 /tmp2 時請不要將檔案直接放至目錄底下;請先創建一個名稱可辨識的目錄(e.g. 學號),接著將你需要使用的資料放至該目錄下。需要注意的是,如果你不希望別人看見你的資料,請記得將目錄權限設定好,這方面工作站管理團隊不負任何管理上的責任,一切由使用者決定。
- /tmp2 本質上是暫存空間,工作站管理團隊可能在機器下線 / 重灌 / 升級時將資料清空,每學期也可能一到兩次清空 /tmp2,使用者必須自負保管資料之責任。
- /tmp2 的使用上請務必遵守 tmp2 使用規則。
- htdocs
- 你可以在個人家目錄底下使用(創建)htdocs 目錄,將網頁放在該目錄下,便可以使用 csie.ntu.edu.tw/~[username]/[filename] 瀏覽該網頁了。
- index.html 為預設之讀取檔案。
- oasis*
- 如果你想在工作站上跑一些小程式,可以多加利用 oasis* ;這幾台工作站專門提供系上師生之一般使用,如果有使用者在上頭跑高負載的程式,會被工作站管理團隊砍掉。
- screen / tmux
- 如果你需要跑執行時間較長,或者同時多個程式,你可以使用 screen 與 tmux 這兩個套件;這兩個套件可以讓你簡單開啟多個工作環境(session),就不需要反覆登入同一台工作站了;同時,你也可以藉由將 session detach 來跑執行時間較長的程式,不需要一直維持連線。
- ps / htop
- 在使用工作站時,你可能會產生一些 zombie process 或持續執行(e.g. 掉入無窮迴圈)的程式;你可以使用 ps 或 htop 指令來查看相關資訊,並將自己產生的 zombie 清除掉,避免消耗工作站不必要的資源:
- 一般情況下,你可以利用
top
與htop
這兩個指令監控自己的 process 及工作站的記憶體、CPU負載等資訊;除此之外,你也可以使用ps -u $username
($username 為你的工作站帳號) 列出目前自己跑的所有 process,或進一步使用pstree -u [username]
來監測自己的程式 fork 子程式的情況。 - 當你發現自己產生了 zombie process,你可以先用上述的幾個指令確定 process 的 pid,接著使用
kill -9 $pid
($pid 為該 process 的 pid) 來砍掉自己的 process;如果你確定你要砍掉的 process 都有同樣的名稱或格式,也可以使用pkill -u $username $pattern
($pattern 為你想要指定的名稱或格式)來砍掉符合條件的 process。 - 如果你想要進一步知道自己的 process 到底執行了哪些操作(system call),可以使用
strace $program
($program 為你想要跑的程式) 或strace -p $pid
來追蹤產生的 process。 - 若你真的無法砍掉自己產生的 process,請儘速來信至 ta217@csie.ntu.edu.tw,工作站管理團隊會協助你處理相關事項。
- 一般情況下,你可以利用
- 在使用工作站時,你可能會產生一些 zombie process 或持續執行(e.g. 掉入無窮迴圈)的程式;你可以使用 ps 或 htop 指令來查看相關資訊,並將自己產生的 zombie 清除掉,避免消耗工作站不必要的資源:
- 使用 ulimit 控制 process 與 file descriptor 的上限
- 工作站上有設定 process / session 的部份資源上限(e.g. 可以開的 file descriptor 數量),你可以使用 ulimit (-a) 指令來查看相關資訊;如果你正在進行撰寫系統相關程式、批改作業等可能會超過資源上限的行為(e.g. 可能會 fork 子程式的 code),可以嘗試降低 soft limit 來避免意外狀況發生(e.g. 無法登入工作站)。
- 你可以參考 ulimit 的 manual 來了解相關的參數設定:
man ulimit
。
- 使用 systemd-run 控制 CPU 與 memory 用量的上限
- 如果你有限制 CPU 或 memory 的需求,可以使用 systemd-run 來調整上限;這樣做也能有效降低工作站硬體的負擔,如果你沒有迫切需求的話可以固定做設定,以下是簡單的範例:
systemd-run --user --scope -p MemoryLimit=3G -p CPUWeight=512 -p IOWeight=500
- 其中
MemoryLimit
限制 memory usage,CPUWeight
限制 CPU 用量,IOWeight
限制 IO bandwidth 的使用量。 - 你可以參考這裡來了解相關的參數設定:https://www.freedesktop.org/software/systemd/man/systemd.resource-control.html
- 如果你有限制 CPU 或 memory 的需求,可以使用 systemd-run 來調整上限;這樣做也能有效降低工作站硬體的負擔,如果你沒有迫切需求的話可以固定做設定,以下是簡單的範例:
- ssh key
- 如果你不想每次登入時都要打密碼,可以考慮改用 ssh key 來登入工作站。
- 教學: https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys–2
- 請注意,ssh private key 是非常重要的個人隱私,不要隨意將 private key 交予他人;同時也建議你務必要設定 keyphrase,再利用 ssh agent 登入,這樣你一樣不用打密碼,同時會有更好的安全性。
- 使用其他的 port 登入
- 有些網路防火牆會擋下 port 80 與 443 以外的連線,i.e. 假設你只使用 http / https 上網;在這種情況下將無法直接登入工作站;此時你可以用
ssh -p [80/443] [hostname]
來登入。
- 有些網路防火牆會擋下 port 80 與 443 以外的連線,i.e. 假設你只使用 http / https 上網;在這種情況下將無法直接登入工作站;此時你可以用
- 更改預設的 shell
- 如果你想使用 bash 以外的 shell,可以在工作站使用
chsh
指令來更換登入預設的 shell。目前工作站提供了 bash, csh, ksh, zsh 等選項,你可以使用該指令詳細查看;此設定會在所有工作站間同步,還請注意。
- 如果你想使用 bash 以外的 shell,可以在工作站使用