本文介紹幾個在 Filecoin 挖礦運維的過程中會用到的幾個系統配置和小工具。

說明:本文所有操作都是在 Ubuntu18.04-LTS 系統下進行的,Centos 可能需要有些調整,請自行摸索。另外,本文所涉及到工具以及調優配置都親測可用。

1. 永久修改 ulimit

二階段測試的 lotus daemon 在同步的時候,經常會出現 too many open files 錯誤,然後停止同步了。而且隨着你算力的增加,每次需要參與時空證明的扇區也會增多,到後面也同樣會出現 too many open files 的錯誤。解決這個問題的方法是修改 ulimit 配置。

一般系統默認的是 1024, 穩妥起見我們可以設置其爲 1048576。臨時修改 ulimit 我們可以使用如下操作 :

    ulimit -n 1048576  

如果要永久設置,操作就複雜一些。首先,需要設置系統層面的 ulimit。

    echo 'fs.file-max = 1048576' | sudo tee -a /etc/sysctl.conf  
    sudo sysctl -p # 立即生效  

然後在修改用戶層的配置:

    sudo tee -a /etc/security/limits.conf << EOF  
    *               hard    nofile          1048576  
    *               soft    nofile          1048576  
    root            hard    nofile          1048576  
    root            soft    nofile          1048576  
    EOF  

然後修改 Systemd 層:

    sudo sed -i '/DefaultLimitNOFILE/c DefaultLimitNOFILE=1048576' /etc/systemd/*.conf  
    sudo systemctl daemon-reexec  

如果你用來跑的網絡服務,通常你還需要設置最大 socket 連接數:

    echo 'net.core.somaxconn=65535' | sudo tee -a /etc/sysctl.conf  
    sudo sysctl -p # 立即生效  

改完記得要重啓才能生效!!!

2. raid 重啓失效問題

這裏順便先提一下硬 RAID 還是軟 RAID 的問題。硬 RAID 重建對資源佔用率較低;軟 RAID 的話,重建的時候,吃 CPU。硬 RAID 的算法其實更穩定點。但軟 RAID 性能會更好。因爲 RAID 卡上的 CACHE 一般也就是 512MB 或者 1GB,但軟 RAID 可以隨便利用系統的內存做 RAID STRIE CACHE。所以,簡單來說,如果你的 CPU 和內存資源有富餘,那麼就可以使用 RAID,否則建議使用硬 RAID

在搭建 RAID 的時候,不知道大家有沒有遇到過這種情況,關機重啓之後,之前組的 RAID 設備不見了,存儲的數據也丟失了。我就遇到過好幾次。原因是沒有配置軟 RAID 的開機加載初始化。

解決方案如下:

    mdadm -Ds >> /etc/mdadm/mdadm.conf   

這樣在 /etc/mdadm/mdadm.conf 文件中就會出現類似如下的一行配置

    ARRAY /dev/md0 metadata=1.2 name=lotus-miner:0 UUID=63dd2141:834e1dd0:b4173301:d483e824  

其中 {name} 是你的主機 hostname UUID 就 RAID 設備的 UUID。

這裏順便貼上搭建 RAID 的腳本:

    mdadm -Cv /dev/md0 -a yes -n 2 -l 0 /dev/sda /dev/sdb   

其中參數 -n 是磁盤的數量,如果後面是分區的話,那就是分區的數量。-l 參數代表你使用的 RAID 級別,0 代表 RAID0, 1 代表 RAID1,一次類推。

3. 關閉 Numa 功能

首先我們要搞清楚一件事情,爲什麼要關閉 NUMA?

Linux 系統默認開啓 NUMA,NUMA 默認的內存分配策略是優先在進程所在 CPU 節點的本地內存中分配,會導致 CPU 節點之間內存分配不均衡。比如當某個 CPU 節點的內存不足時,會導致 Swap 產生,而不是從遠程節點分配內存,即使另一個 CPU 節點上有足夠的物理內存。這種內存分配策略的初衷是好的,爲了內存更接近需要它的進程,但不適合大規模使用內存使用的應用場景,不利於充分利用系統的物理內存。

然而衆所周知,Filecoin 對內存的需求近乎貪婪。而且你會發現明還有幾十 GB 的物理內存,但是它偏偏卻加載了幾十 GB 的 Swap。而一旦使用 Swap, 性能就立即下降內存的萬分之一甚至更低

首先你需要檢查一下你的機器上是否已經開啓了 Numa 模式,可以使用 numastat 這個命令來查看,如果本機沒有這個命令的話,你需要先安裝 numactl

    sudo apt-get install numactl  

然後就可以使用 numastat 查看當前系統是否有啓用 Numa.

    numastat   
                               node0  
    numa_hit               484417331  
    numa_miss                      0  
    numa_foreign                   0  
    interleave_hit             40687  
    local_node             484417331  
    other_node                     0  

如果你的機器跟我的一樣只有一個 node 的話,說明你不需要關閉 Numa 了,因爲此時 Numa 根本沒有起作用。一般來說家用機器,CPU 的核數不會太高,所以不需要用到 Numa 來優化。

我在 E5-2684 V4 的機器上運行了一下,結果如下:

    root@miner1:~# numastat  
                               node0           node1  
    numa_hit              2093513830      2859729719  
    numa_miss              949731552       128562031  
    numa_foreign           128562031       949731552  
    interleave_hit             51160           50655  
    local_node            2093549941      2859639315  
    other_node             949695441       128652435  

從上面的結果來看,Numa 顯然是啓用的,CPU 和內存都被分配成 2 個 node。跨節點之間進行物理內存的訪問,性能會降低十倍

禁用 Numa 有兩種方法,一種是通過 Bios 設置,不同的主板有不同的設置方法,這個我就不說了,大家根據自己的主板類型去網上找答案。

這裏主要說下通過修改系統配置的方式禁用 Numa :

(1) CentOS 的 grub 配置文件修改,編輯 /etc/grub.conf,找到 kernel 行,該行類似如下(不同的版本內容略有差異,但開頭有“kernel /vmlinuz-”):

    kernel /vmlinuz-2.6.32-358.el6.x86_64 ro root=/dev/mapper/vg_centos64001-lv_root rd_NO_LUKS rd_LVM_LV=vg_centos64001/lv_root rd_NO_MD rd_LVM_LV=vg_centos64001/lv_swap \  
    crashkernel=128M LANG=zh_CN.UTF-8  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet  

在 kernel 行的末尾,空格再添加 numa=off,如果有多個 kernel 行,則每個 kernel 行都要添加。

(2) Ubuntu18.04 的 grub 文件修改,編輯 /boot/grub/grub.cfg,找到 Linux 引導行,該行類似如下(不同版本內容略有差異,但開頭有 linux /boot/vmlinuz-):

    linux   /boot/vmlinuz-4.15.0-106-generic root=UUID=2c5f7d8a-ff33-4c78-b5a4-cd8dc75823f3 ro  maybe-ubiquity  

在 Linux 引導行的末尾,空格再添加 numa=off,如果有多個 Linux 引導行,則每個 Linux 引導行都要添加。

(3)修改後保存,再重啓系統,再驗證是否成功關閉 NUMA。

    numastat  

如果輸出結果中只有 node0,則表示成功禁用了 NUMA,如果有 node1 出現則失敗。

4. 開啓 CPU 到高性能模式

Ubuntu 系統中默認 CPU 都是工作在 powersave(省電)模式的,這樣性能沒有最大話,所以需要調整到 performance(高性能)模式。你可以通過設置 Bios 或者通過軟件臨時調節。

1、安裝 cpufrequtils:

    sudo apt-get install cpufrequtils  

2、查看當前 cpu 的狀態:

    cpufreq-info  

3、把 cpu 調整到性能模式:

    sudo cpufreq-set -g performance  

5. 兩個資源查看小工具

(1)雖然 linux 系統自帶的 top 工具已經比較強大了,但是感覺視覺體驗上還是不夠好,而且不能看到每個核的使用情況。htop 剛好可以彌補 top 工具的不足。Ubuntu 10.04 是默認安裝了 htop 工具了的。如果沒有的話,使用 apt-get install htop 安裝。效果如下:

Filecoin 運維 (1) - 幾個常用的系統配置

(2) nvtop 是一個 GPU 資源查看工具,nvidia-msitop 一樣簡陋 ; 相比之下,nvtop 比 nvidia-msi 好看多了。

Ubuntu-20.04 安裝:

    sudo apt install nvtop  

18.04 沒有直接的軟件源可以使用,需收手動編譯:

    sudo apt install cmake libncurses5-dev libncursesw5-dev git  
    git clone https://github.com/Syllo/nvtop.git  
    mkdir -p nvtop/build && cd nvtop/build  
    cmake ..  
    # 如果上面命令報錯 "Could NOT find NVML (missing: NVML_INCLUDE_DIRS)" 就執行下面這個  
    cmake .. -DNVML_RETRIEVE_HEADER_ONLINE=True  
    make && sudo make install  

nvtop 效果如下:

Filecoin 運維 (1) - 幾個常用的系統配置~~

本文首發於:小一輩無產階級碼農 原文鏈接:http://www.r9it.com/20200615/sys-config-for-filecoin.html

參考鏈接

  • Numa 架構

  • 禁用 Numa

訂閱號中鏈接不可點,請戳“原文鏈接”獲取


本文作者:陽建

作者主頁:

https://learnblockchain.cn/people/262


Filecoin 運維 (1) - 幾個常用的系統配置

來源鏈接:mp.weixin.qq.com