You need to enable JavaScript to run this app.
导航
veLinux 1.0系统特性说明
最近更新时间:2024.05.24 10:20:02首次发布时间:2021.09.13 19:54:46

本文主要介绍veLinux 1.0操作系统中,内核、系统组件、系统配置和优化等关键特性。

内核

veLinux kernel基于内核社区长期支持(LTS)的5.4版本定制而成,对内存、网络、I/O、文件系统等模块进行了缺陷修复、性能增强并引入了适用于云应用的新特性,例如:

  • 优化冗余的HugeTLB页,降低内存开销。

  • 增加ebpf通用helper函数,支持通过模块添加ebpf功能。

  • 优化了cgroup slab memory controller。

  • VDUSE设备模拟框架。

  • PSI特性:针对cgroup级别的CPU stall增加了FULL模式,优化了memory stall FULL模式的实现和进程阻塞切换的开销。

系统组件

火山引擎自研软件包,如下。

atop

atop是开源社区的一个性能监测工具,火山引擎在社区版本的基础上进行了定制开发,新增feature包括:

  • 支持筛选记录Top N线程的监控数据记录。

  • 支持JSON格式输出监控数据,提供多样化展示。

  • 避免crash后持续写旧文件导致无效写入。

  • 支持定制日志保留天数。

kdump-tools

配合veLinux 5.4.56版本内核使用,内核发生kernel panic之时(硬件故障或内核软件issue)第一内核切换到第二内核,处理panic现场,记录关键信息。配合内核dbg包,支持gdb调试和追溯。支持上报服务端,配合监控服务使用,提供内核panic的准实时监控报警功能。

systemd

修复了journald重启时日志丢失的问题。

pciutils

提供了正确读取和显示PCI Gen 4 16GT/s速率的支持。

zlib

zlib是开源社区的一个无损压缩的基础库,火山引擎在社区版本madler/zlib上进行了一些性能优化。

  • 支持压缩过程中哈希函数的向量化指令,并且重构了字符串匹配的流程。

  • 增强解压过程中长字符串拷贝效率。

  • 支持crc32/adler32等校验码的向量化指令。

压缩和解压缩性能对比:
image

配置优化

基于字节海量业务场景,为了高并发、低时延等业务需求,对内存、文件系统、网络、安全等方面的系统配置进行了深度优化。

网络

  • 高并发

    配置项说明
    net.core.netdev_max_backlog16384最大积压包的个数
    net.core.somaxconn16384最大积压监听socket的个数
    net.ipv4.tcp_max_syn_backlog16384最大积压SYN同步包请求的个数
    net.ipv4.ip_local_port_range10000 65535本地最小和最大端口的限制
    net.ipv4.tcp_max_orphans2097152孤立连接的最大数量
    net.ipv4.tcp_max_tw_buckets1048576总timewait数
  • 低时延

    配置项说明
    net.core.rmem_max16777216最大socket读buffer
    net.core.wmem_max16777216最大socket写buffer
    net.ipv4.tcp_rmem4096 87380 33554432TCP读buffer的最小/默认/最大值
    net.ipv4.tcp_wmem4096 65536 33554432TCP读buffer的最小/默认/最大值
    net.ipv4.tcp_slow_start_after_idle0TCP连接在空闲后不进入slow start
    net.ipv4.tcp_fastopen3client和server都开启fastopen
    net.ipv4.tcp_fin_timeout15FIN_WAIT_2状态的最大时长
  • 网络安全

    配置项说明
    net.ipv4.ip_forward0禁止网络端口间的IP转发
    net.ipv6.conf.all.forwarding0禁止网络端口间的IPv6转发
    net.ipv4.tcp_syncookies1打开SYN Cookie功能,防止SYN攻击
    net.ipv4.conf.all.route_localnet0阻止跨机器的本地回环访问
  • 提高资源利用

    配置项说明
    net.ipv4.tcp_tw_recycle0关闭TIME-WAIT sockets重用
    net.ipv4.tcp_tw_reuse1允许TIME-WAIT sockets的快速回收
    net.ipv4.tcp_orphan_retries2RTO重试次数
    net.ipv4.tcp_synack_retries2SYNACK重试次数
    net.ipv4.tcp_syn_retries3SYN重试次数
    net.ipv4.tcp_thin_linear_timeouts1开启线性超时重传

安全

  • 增加漏洞利用难度

    配置项说明
    kernel.dmesg_restrict1禁止普通用户读取dmesg
    kernel.randomize_va_space2开启地址空间布局随机化
    vm.unprivileged_userfaultfd0禁止普通用户使用userfaultfd系统调用
    kernel.kptr_restrict1只有拥有 CAP_SYSLOG 权限,且 euid==ruid 才可以读取通过 %pK 打印的内核地址 (即通过读取 /proc/kallsyms 获取内核导出符号的地址 )
  • 减小攻击面

    配置项说明
    kernel.yama.ptrace_scope1禁止PTRACE_ATTACH功能
    kernel.unprivileged_bpf_disabled1禁止普通用户使用eBPF系统调用
    fs.protected_hardlinks1限制任意用户创建任意文件的硬链接
    fs.protected_symlinks1对符号链接进行验证
    fs.suid_dumpable0SUID_DUMP_DISABLE防止protected/tainted进程的coredump被恶意利用
    kernel.perf_event_paranoid
    2限制普通用户对 perf event 的访问,缺少 CAP_SYS_ADMIN 特权时,阻止使用 kernel profiling、CPU event、ftrace function tracepoint、 raw tracepoint

其他

  • 高性能

    配置项说明
    vm.swappiness0最大限度使用物理内存
    vm.max_map_count2097152最大进程内存空间
  • 调试功能

    配置项说明
    kernel.sched_schedstats1开启scheduler statistics增加调试和统计信息
    net.core.bpf_jit_enable1开启eBPF
  • 高并发

    配置项说明
    kernel.pid_max4194303最大PID
    fs.file-max12288000最大fd
    net.unix.max_dgram_qlen512unix socket队列长度