https://github.com/leandromoreira/linux-network-performance-parameters
Linux 网络参数,有大量参数原理性的解释,可以帮助理解内核相关的底层实现
Linux 网络参数,有大量参数原理性的解释,可以帮助理解内核相关的底层实现
https://doi.org/10.1145/3317550.3321426
在设计操作系统的年代,IO 都是很慢的,在这种情况下每次 IO 的系统调用的开销就不太重要。这种抽象在现代对 IO 的性能带来了巨大的 overhead,Linux 越来越多的加入了绕过内核,将驱动实现到用户态独占设备的 workaround(如 dpdk)。这篇讨论了将 IO 设备垂直划分的抽象方式,对容器多线程等也会更友好。
在设计操作系统的年代,IO 都是很慢的,在这种情况下每次 IO 的系统调用的开销就不太重要。这种抽象在现代对 IO 的性能带来了巨大的 overhead,Linux 越来越多的加入了绕过内核,将驱动实现到用户态独占设备的 workaround(如 dpdk)。这篇讨论了将 IO 设备垂直划分的抽象方式,对容器多线程等也会更友好。
https://lwn.net/Articles/736534/
https://lwn.net/Articles/738449/
比较详细的介绍了 Linux 块设备的结构,可以帮助理解调优系统出现磁盘等块设备性能问题的原因,也可以看到在这套抽象下,块设备难以进行隔离的原因。
https://lwn.net/Articles/738449/
比较详细的介绍了 Linux 块设备的结构,可以帮助理解调优系统出现磁盘等块设备性能问题的原因,也可以看到在这套抽象下,块设备难以进行隔离的原因。
http://lists.llvm.org/pipermail/llvm-dev/2019-June/133308.html
A corporate-led project does not have to answer to the community, and will leave whatever bugs they introduce in place for the sake of bug-compatibility with their own software rather than fixing them.
Avoiding monoculture preserves the motivation for consensus-based standards processes rather than single-party control (see also: Chrome and what it's done to the web) and the motivation for people writing software to write to the standards rather than to a particular implementation. A big part of making that possible is clear delineation of roles between parts of the toolchain and runtime, with well-defined interface boundaries.
A corporate-led project does not have to answer to the community, and will leave whatever bugs they introduce in place for the sake of bug-compatibility with their own software rather than fixing them.
Avoiding monoculture preserves the motivation for consensus-based standards processes rather than single-party control (see also: Chrome and what it's done to the web) and the motivation for people writing software to write to the standards rather than to a particular implementation. A big part of making that possible is clear delineation of roles between parts of the toolchain and runtime, with well-defined interface boundaries.
https://doi.org/10.1145/2901318.2901326
Linux 内核调度的 casestudy,比较全面的介绍了现代 Linux 内核调度的方法,同时几个调度的 bug 也对于在现代硬件下调度系统的复杂度有比较好的展现。
Linux 内核调度的 casestudy,比较全面的介绍了现代 Linux 内核调度的方法,同时几个调度的 bug 也对于在现代硬件下调度系统的复杂度有比较好的展现。
https://dl.acm.org/citation.cfm?id=3304053
降低压缩冷内存对业务服务的影响。屠龙术,比较有趣的是定义 metrics 的方法。一般认为这种内存访问是很难定义出对业务的影响指标的,本文使用单个 task 访问的冷内存块 / 访问的总内存块来定义,不过需要追踪统计在运行过程中单个 task 访问到的内存块总数(size)
降低压缩冷内存对业务服务的影响。屠龙术,比较有趣的是定义 metrics 的方法。一般认为这种内存访问是很难定义出对业务的影响指标的,本文使用单个 task 访问的冷内存块 / 访问的总内存块来定义,不过需要追踪统计在运行过程中单个 task 访问到的内存块总数(size)
https://ai.google/research/pubs/pub48630/
用户态实现业务特化的网络接口(RDMA like)与业务特化的调度来优化网络性能。相对于传统的只是 bypass NIC 到业务进程的做法来说,中心化的用户进程能更充分调度利用系统性能;而相对与修改内核网络栈的实现或者内核模块来说,进程间共享内存的成本更低,并且能以更快的迭代速度(每周)无中断的更新网络模块。就像内核调度的 casestudy 所提的,将通用的,稳定可靠优先的内核实现替换成业务特化的用户态实现可能是一类趋势。
用户态实现业务特化的网络接口(RDMA like)与业务特化的调度来优化网络性能。相对于传统的只是 bypass NIC 到业务进程的做法来说,中心化的用户进程能更充分调度利用系统性能;而相对与修改内核网络栈的实现或者内核模块来说,进程间共享内存的成本更低,并且能以更快的迭代速度(每周)无中断的更新网络模块。就像内核调度的 casestudy 所提的,将通用的,稳定可靠优先的内核实现替换成业务特化的用户态实现可能是一类趋势。
https://doi.org/10.1145/3297858.3304053
以用户进程的方式运行 unikernel。unikernel 本身的好处是减小攻击面,减少频繁系统调用的开销,从这个角度来看把 unikernel 当作一个程序来执行像是一种退步或者折中。但是另一方面来看,由于 unikernel 本身的实现,系统调用已经被静态链接到了业务程序中,仅剩一些和外界交互的 hypercall(如 IO 等),使用 seccomp 过滤,劫持了这些 hypercall 以后,确实依然能享受到减少攻击面与减少系统调用的开销。这个实现方式有点类似 gVisor,只不过 gVisor 的内核是在业务程序外,而把 syscall 转变成 hypercall,但限制 gVisor 访问的系统调用也能达到类似的减少攻击面的效果。
以用户进程的方式运行 unikernel。unikernel 本身的好处是减小攻击面,减少频繁系统调用的开销,从这个角度来看把 unikernel 当作一个程序来执行像是一种退步或者折中。但是另一方面来看,由于 unikernel 本身的实现,系统调用已经被静态链接到了业务程序中,仅剩一些和外界交互的 hypercall(如 IO 等),使用 seccomp 过滤,劫持了这些 hypercall 以后,确实依然能享受到减少攻击面与减少系统调用的开销。这个实现方式有点类似 gVisor,只不过 gVisor 的内核是在业务程序外,而把 syscall 转变成 hypercall,但限制 gVisor 访问的系统调用也能达到类似的减少攻击面的效果。
https://doi.org/10.1145/3341301.3359656
Ceph 10 年心路历程。大多数的分布式文件系统都是在一个已有的文件系统上实现的用户空间文件系统,Ceph 解释了为什么这么做很难,以及为什么他们认为从 raw device 去实现是更好的方式。尤其是对于 SMR 磁盘这种设备,一个专门设计的文件系统会大幅提升 SMR 磁盘的性能。可以作为实现一个分布式文件系统大概需要考虑哪些方面的问题的参考。
Ceph 10 年心路历程。大多数的分布式文件系统都是在一个已有的文件系统上实现的用户空间文件系统,Ceph 解释了为什么这么做很难,以及为什么他们认为从 raw device 去实现是更好的方式。尤其是对于 SMR 磁盘这种设备,一个专门设计的文件系统会大幅提升 SMR 磁盘的性能。可以作为实现一个分布式文件系统大概需要考虑哪些方面的问题的参考。
