# veLinux特性说明

By [Test](https://paragraph.com/@test-33) · 2022-01-28

---

#### veLinux特性说明

更新时间：2021.09.13 19:54:46

系统特性
----

系统特性包含内核、系统组件、系统配置和优化等。

### 内核

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等校验码的向量化指令。
    

压缩和解压缩性能对比：

### 配置优化

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

#### 网络

*   高并发
    
    **配置项值说明**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.ipv4.tcp\_max\_orphans2097152孤立连接的最大数量net.ipv4.tcp\_max\_tw\_buckets1048576总timewait数
    
*   低时延
    
    **配置项值说明**net.core.rmem\_max16777216最大socket读buffernet.core.wmem\_max16777216最大socket写buffernet.ipv4.tcp\_rmem4096 87380 33554432TCP读buffer的最小/默认/最大值net.ipv4.tcp\_wmem4096 65536 33554432TCP读buffer的最小/默认/最大值net.ipv4.tcp\_slow\_start\_after\_idle0TCP连接在空闲后不进入slow startnet.ipv4.tcp\_fastopen3client和server都开启fastopennet.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禁止普通用户读取dmesgkernel.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\_paranoid2限制普通用户对 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最大PIDfs.file-max12288000最大fdnet.unix.max\_dgram\_qlen512unix socket队列长度

---

*Originally published on [Test](https://paragraph.com/@test-33/velinux)*
