群晖性能调优指南
群晖DSM虽然在易用性方面非常不错,但是系统上的很多机制可以说是非常搓了,我的DS918+,自行添加内存到16G双通道,按理来说,NAS上跑的那点东西,16G内存是完全够用了,但就是这样,群晖也特别喜欢用虚拟内存,导致开机久了,我打开docker控制台,都要等7,8秒 原因就在于,群晖的配置都非常寒酸,那么高的价格只舍得配2G,4G的内存,DSM默认的vm.swappiness值设定为10,内存高的建议修改为1 所以,如果想要提高群晖系统的流畅度,首先就是要加大你的内存,之后修改DSM的vm.swappiness数值 ssh 进群晖,输入如下命令即可,不需要重启(对大部分Linux系统也适用) 目录 临时生效版 永久生效版 添加到群晖计划任务中 添加开机时刷新sysctl.conf 简单说一下vm.swappiness vm.swappiness 优化 相关文章推荐 临时生效版 之前的方法方法,虽说是永久生效,但是群晖并不会读取/etc/sysctl.conf,所以实际上,我们还是要重启后刷新一下sysctl.conf。不如直接开机时就执行修改swappiness的命令,这条命令...
深度学习笔记之约束优化
有时候,在 x 的所有可能值下最大化或最小化一个函数 f(x) 不是我们所希望的。相反,我们可能希望在 x 的某些集合 S 中找 f(x) 的最大值或最小值。这被称为约束优化 (constrained optimization)。在约束优化术语中,集合 S 内的点 x 被称为可行 (feasible) 点。 我们常常希望找到在某种意义上小的解。针对这种情况下的常见方法是强加一个范数约束,如 ∥x∥ ≤ 1。约束优化的一个简单方法是将约束考虑在内后简单地对梯度下降进行修改。如 果我们使用一个小的恒定步长 ϵ,我们可以先取梯度下降的单步结果,然后将结果投影回 S。如果我们使用线搜索,我们只能在步长为 ϵ 范围内搜索可行的新 x 点,或者我们可以将线上的每个点投影到约束区域。如果可能的话,在梯度下降或线搜索前将梯度投影到可行域的切空间会更高效 (Rosen, 1960)。 一个更复杂的方法是设计一个不同的、无约束的优化问题,其解可以转化成原始约束优化问题的解。例如,我们要在 x ∈ R2 中最小化 f(x),其中 x 约束为具有单位 L2 范数。我们可以关于 θ 最小化 g(θ) = ...
冷门高频股票因子
一些不常见的高频因子,分享给有缘人。 写得比较随意,大致有几块:Order aggressiveness、order book shape、撤单、事件聚集、订单薄韧性、异常挂单、逐笔。一、Order aggressiveness(1)订单侵略性,其实就是挂单的激进程度。假设你是买家,你挂单的价格越高,你就越激进;反过来,你是卖家,你挂单价格越低,你越是激进的卖家。举个例子,买家挂单越接近bid1,越激进;卖家挂单越接近ask1,越激进; (2)订单侵略性,体现了买家/卖家完成交易的迫切程度。通过整个订单薄,我们可以知道所有买家整体的激进程度、和所有卖家整体的激进程度;通过这个,就能构建一系列因子了。此外,买卖aggressiveness的差异,也是一系列因子; (3)一个订单的执行概率和订单薄的厚度、参与者对即将到来的订单的预期有关;买盘越厚,一个潜在的买家下market order的概率更大;这套说法对卖方同样适用;bid ask的厚度体现了看涨和看跌者的相对力量。 (4)不要用静态的思维来看待订单薄,要从动态的角度来分析。订单薄性质的变化,体现了多空力量的动态变化,是未来价格...
test
群晖性能调优指南
群晖DSM虽然在易用性方面非常不错,但是系统上的很多机制可以说是非常搓了,我的DS918+,自行添加内存到16G双通道,按理来说,NAS上跑的那点东西,16G内存是完全够用了,但就是这样,群晖也特别喜欢用虚拟内存,导致开机久了,我打开docker控制台,都要等7,8秒 原因就在于,群晖的配置都非常寒酸,那么高的价格只舍得配2G,4G的内存,DSM默认的vm.swappiness值设定为10,内存高的建议修改为1 所以,如果想要提高群晖系统的流畅度,首先就是要加大你的内存,之后修改DSM的vm.swappiness数值 ssh 进群晖,输入如下命令即可,不需要重启(对大部分Linux系统也适用) 目录 临时生效版 永久生效版 添加到群晖计划任务中 添加开机时刷新sysctl.conf 简单说一下vm.swappiness vm.swappiness 优化 相关文章推荐 临时生效版 之前的方法方法,虽说是永久生效,但是群晖并不会读取/etc/sysctl.conf,所以实际上,我们还是要重启后刷新一下sysctl.conf。不如直接开机时就执行修改swappiness的命令,这条命令...
深度学习笔记之约束优化
有时候,在 x 的所有可能值下最大化或最小化一个函数 f(x) 不是我们所希望的。相反,我们可能希望在 x 的某些集合 S 中找 f(x) 的最大值或最小值。这被称为约束优化 (constrained optimization)。在约束优化术语中,集合 S 内的点 x 被称为可行 (feasible) 点。 我们常常希望找到在某种意义上小的解。针对这种情况下的常见方法是强加一个范数约束,如 ∥x∥ ≤ 1。约束优化的一个简单方法是将约束考虑在内后简单地对梯度下降进行修改。如 果我们使用一个小的恒定步长 ϵ,我们可以先取梯度下降的单步结果,然后将结果投影回 S。如果我们使用线搜索,我们只能在步长为 ϵ 范围内搜索可行的新 x 点,或者我们可以将线上的每个点投影到约束区域。如果可能的话,在梯度下降或线搜索前将梯度投影到可行域的切空间会更高效 (Rosen, 1960)。 一个更复杂的方法是设计一个不同的、无约束的优化问题,其解可以转化成原始约束优化问题的解。例如,我们要在 x ∈ R2 中最小化 f(x),其中 x 约束为具有单位 L2 范数。我们可以关于 θ 最小化 g(θ) = ...
冷门高频股票因子
一些不常见的高频因子,分享给有缘人。 写得比较随意,大致有几块:Order aggressiveness、order book shape、撤单、事件聚集、订单薄韧性、异常挂单、逐笔。一、Order aggressiveness(1)订单侵略性,其实就是挂单的激进程度。假设你是买家,你挂单的价格越高,你就越激进;反过来,你是卖家,你挂单价格越低,你越是激进的卖家。举个例子,买家挂单越接近bid1,越激进;卖家挂单越接近ask1,越激进; (2)订单侵略性,体现了买家/卖家完成交易的迫切程度。通过整个订单薄,我们可以知道所有买家整体的激进程度、和所有卖家整体的激进程度;通过这个,就能构建一系列因子了。此外,买卖aggressiveness的差异,也是一系列因子; (3)一个订单的执行概率和订单薄的厚度、参与者对即将到来的订单的预期有关;买盘越厚,一个潜在的买家下market order的概率更大;这套说法对卖方同样适用;bid ask的厚度体现了看涨和看跌者的相对力量。 (4)不要用静态的思维来看待订单薄,要从动态的角度来分析。订单薄性质的变化,体现了多空力量的动态变化,是未来价格...
test
Subscribe to Test
Subscribe to Test
Share Dialog
Share Dialog
<100 subscribers
<100 subscribers
更新时间: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是开源社区的一个性能监测工具,字节跳动在社区版本的基础上进行了定制开发,新增feature包括:
支持筛选记录Top N线程的监控数据记录。
支持JSON格式输出监控数据,提供多样化展示。
避免crash后持续写旧文件导致无效写入。
支持定制日志保留天数。
配合veLinux 5.4.56版本内核使用,内核发生kernel panic之时(硬件故障或内核软件issue)第一内核切换到第二内核,处理panic现场,记录关键信息。配合内核dbg包,支持gdb调试和追溯。支持上报服务端,配合监控服务使用,提供内核panic的准实时监控报警功能。
修复了journald重启时日志丢失的问题。
提供了正确读取和显示PCI Gen 4 16GT/s速率的支持。
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队列长度
更新时间: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是开源社区的一个性能监测工具,字节跳动在社区版本的基础上进行了定制开发,新增feature包括:
支持筛选记录Top N线程的监控数据记录。
支持JSON格式输出监控数据,提供多样化展示。
避免crash后持续写旧文件导致无效写入。
支持定制日志保留天数。
配合veLinux 5.4.56版本内核使用,内核发生kernel panic之时(硬件故障或内核软件issue)第一内核切换到第二内核,处理panic现场,记录关键信息。配合内核dbg包,支持gdb调试和追溯。支持上报服务端,配合监控服务使用,提供内核panic的准实时监控报警功能。
修复了journald重启时日志丢失的问题。
提供了正确读取和显示PCI Gen 4 16GT/s速率的支持。
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队列长度
No activity yet