26

Filecoin 运维(1) - 几个常用的系统配置

 3 years ago
source link: https://learnblockchain.cn/article/1464
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

本文介绍几个在 Filecoin 挖矿运维的过程中会用到的几个系统配置和小工具。

说明:本文所有操作都是在 Ubuntu18.04-LTS 系统下进行的,Centos 可能需要有些调整,请自行摸索。 另外,本文...

本文介绍几个在 Filecoin 挖矿运维的过程中会用到的几个系统配置和小工具。

说明:本文所有操作都是在 Ubuntu18.04-LTS 系统下进行的,Centos 可能需要有些调整,请自行摸索。 另外,本文所涉及到工具以及调优配置都亲测可用。

1. 永久修改 ulimit

二阶段测试的 lotus daemon 在同步的时候,经常会出现 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 安装。效果如下:

7fyqIv6.png!mobile

(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 效果如下:

Jj6ZJja.png!mobile ~~~~

本文首发于: 小一辈无产阶级码农 原文链接:http://www.r9it.com/20200615/sys-config-for-filecoin.html

参考链接

本文介绍几个在 Filecoin 挖矿运维的过程中会用到的几个系统配置和小工具。

说明:本文所有操作都是在 Ubuntu18.04-LTS 系统下进行的,Centos 可能需要有些调整,请自行摸索。 另外,本文所涉及到工具以及调优配置都亲测可用。

1. 永久修改 ulimit

二阶段测试的 lotus daemon 在同步的时候,经常会出现 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 安装。效果如下:

7fyqIv6.png!mobile

(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 效果如下:

Jj6ZJja.png!mobile ~~~~

本文首发于: 小一辈无产阶级码农 原文链接: http://www.r9it.com/20200615/sys-config-for-filecoin.html

参考链接

本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

  • 发表于 6分钟前
  • 阅读 ( 6 )
  • 学分 ( 0 )
  • 分类:FileCoin

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK