2022年6月8日 星期三

DKMS for vmware-host-modules

 參考 asus-ec-driver 的 dkms 改寫出來的, 懶的再包成 .deb 了. 一方面也是因為我 script 裡是另外去下載 source-core, 所以並不存在固定 package_version : 

https://github.com/zetta-shao/vmware-hostmodules-dkms.git

執行 sudo ./mkmod.sh 就可以. 
如果要更改為 workstation 16.2.3 則下 "sudo ./mkmod.sh workstation-16.2.3" , 
如果想清掉已安裝的 source code, 下 sudo ./mkmod.sh clean

mkmod.sh 裡 BRANCH 寫上目前正在用的版本, 如果不知道要寫什麼的話, 可以敲: 

git ls-remote https://github.com/mkubecek/vmware-host-modules.git|grep heads

看 refs/heads/ 之後寫的版號有哪個是相符於自己使用的版本, 就是敲哪個. 

ps.直接使用 "workstation" 我確定是沒用的.


這包裡面的東西只是 vmware-host-modules 裡的三個 Makefile 用另外別的檔案取代執行, 完全沒有動到原本的 code. 也因為我執行的 makefile 是別的 makefile, 往後可能會有不相容的情況 (目前我試 12.5.9 跟 16.2.1 是都一切正常就是..), 有不相容時到時再說....

順路一提目前已知要裝的套件有: build-essential, git, dkms. 相依套件會有一大票.

2022年6月2日 星期四

nfs kernel server 一點筆記

 偶然間發現在 16 core Denverton C3958 的機器上發現 nfsd 只會跑到 8 個 thread 時發現的. 

改這個:

/etc/default/nfs-kernel-server
# Number of servers to start up
RPCNFSDCOUNT=4
# Options for rpc.mountd.
RPCMOUNTDOPTS="--manage-gids -p 65502"

RPCNFSDCOUNT 這裡建議機器有多少 h/w thread, 或說 lscpu 列的 CPUs 寫多少就填多少, 雖然 nfsd 頂多一顆 CPU 用到 55% (以 atom c3958 來說), 但個人反復實驗的結果是跟能用上多少 h/w therads 數一樣就好, 寫多也沒有用.

RPCMOUNTDOPTS 後面的 -p 65502 這個原本是為了穿防火牆用的. nfs server 原本會用 port 2049, 還有一個亂數決定 port 號的傳輸口, 在這裡下這個 -p 可以指定都走哪一個 port 出去. 但很奇怪的, 我發現設定上這個參數時 nfs server 可以跑的比較快.


另外呢, 如果本身用的都是 mellanox connectX2 以上的卡的話, 直接掛上 RDMA 吧, 什麼都不用調, 也不用管 h/w threads 有多少, 就直接最佳化到底.

-------------------------------- 以下是 RDMA 的部份 --------------------------------

那 nfs server 如何支援 RDMA 呢? 想想我還是寫在同一篇裡好了. 不過先說在前面, 非 mellanox 硬體支援 RDMA 的卡給它跑 RDMA 意義不大, 要跑可以, 速度直接砍一半. 原本文中的主角 atom c3958 用的 intel x553 個人沒實驗成功跟 connectX2 或 X3 對連成功, 所以我無法告知能跑到什麼程度. 

ok 進正文. ubuntu 20.04 底下要 nfs server 支援 RDMA, 首先先裝上 rdma-core 還有跟它相關的套件後, 起動 nfs server 之後, 下:

echo rdma 20049 > /proc/fs/nfsd/portlist

接著 client 端就可以掛起來:

mount -t nfs4 -o rdma,port=20049 10.1.1.1:/dir /mount/dir

server 跟 client 端要掛什麼 kernel module 都幫你自動掛起來. 唯 rdma 看來只有支援 ipv4, 沒有支援 ipv6.

以上我是用 MCX353 對連測試的, 連結設定是 ethernet, 不是 infiniband. 
-------------------------------- 以上是 RDMA 的部份 --------------------------------

最後, 網卡 mtu 有沒有設到 9000 有不小的差別.