飞行的蜗牛

vuePress-theme-reco 极客学长    2013 - 2025
飞行的蜗牛 飞行的蜗牛

Choose mode

  • dark
  • auto
  • light
首页
分类
  • 技术杂谈
  • Database
  • Docker
  • PHP
  • 随笔杂谈
  • 前端开发
  • FunnyTools
  • Jekyll
  • 读书笔记
  • Java
  • SpringBoot
  • 区块链技术
  • IPFS
  • C/C++
  • Filecoin
  • Golang
  • Sharding-JDBC
  • 分布式存储
  • Lotus-源码系列
  • Lotus
  • 框架源码系列
  • Spring-源码系列
  • AI
  • ChatGPT
  • Stable Diffusion
  • DeepSeek-R1
  • DeepSeek-V3
标签
时间抽
关于作者
开源项目
GeekAI (opens new window)
author-avatar

极客学长

154

文章

151

标签

首页
分类
  • 技术杂谈
  • Database
  • Docker
  • PHP
  • 随笔杂谈
  • 前端开发
  • FunnyTools
  • Jekyll
  • 读书笔记
  • Java
  • SpringBoot
  • 区块链技术
  • IPFS
  • C/C++
  • Filecoin
  • Golang
  • Sharding-JDBC
  • 分布式存储
  • Lotus-源码系列
  • Lotus
  • 框架源码系列
  • Spring-源码系列
  • AI
  • ChatGPT
  • Stable Diffusion
  • DeepSeek-R1
  • DeepSeek-V3
标签
时间抽
关于作者
开源项目
GeekAI (opens new window)
  • Filecoin 运维(1) - 几个常用的系统配置

    • 1. 永久修改 ulimit
      • 2. raid 重启失效问题
        • 3. 关闭 Numa 功能
          • 4. 开启 CPU 到高性能模式
            • 5. 两个资源查看小工具
              • 参考链接

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

              vuePress-theme-reco 极客学长    2013 - 2025

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


              极客学长 2020-06-15 0 Filecoin Numa raid0 ulimit

              可可香奈儿《奢侈的》

              奢侈并不意味着贵重与华丽,奢侈是摒弃粗俗。

              本文介绍几个在 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 安装。效果如下:

              (2)nvtop 是一个 GPU 资源查看工具,nvidia-msi 跟 top 一样简陋; 相比之下,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 效果如下:

              # 参考链接

              • Numa 架构 (opens new window)
              • 禁用Numa (opens new window)

              本站博文如非注明转载则均属作者原创文章,引用或转载无需申请版权或者注明出处,如需联系作者请加微信: geekmaster01

              Filecoin 二阶段测试(2) - AMD CPU 的胜利 Ceph-08 配置 Ceph SSD 缓存池