Pthread
赛博考古:Linux 支持 POSIX 线程标准的前世今生 线程是什么 操作系统能够进行运算调度的最小单位。在一般的操作系统上,它被包含在进程之中,是进程中的实际运作单位。 ...
赛博考古:Linux 支持 POSIX 线程标准的前世今生 线程是什么 操作系统能够进行运算调度的最小单位。在一般的操作系统上,它被包含在进程之中,是进程中的实际运作单位。 ...
看到了 xuanwo 的一篇 博客,感觉很有意思。 完整读一遍也可以,不过也可以看我的省流。 Python IO 比 C / Rust IO 更快 有人发现在 AMD Ryzen 9 5900X 和 AMD Ryzen 7 5700X 上访问页对齐的前10个 byte 会比其他偏移有更多的 L1 prefetch 和 load 的 miss 。 学过 x86 汇编的应该知道不同于 RISC ,x86 是有专门用于复制字符串的指令的。有人发现上述问题的底层原因来自于 AMD 对 FSRM(Fast Short REP MOV) 的实现,逆天的是在 Zen 3 上,访问页对齐的数据比不对齐慢。 更有趣的事情 作者发现将 C 的分配器换成 jemalloc 后速度就可以击败 Python 了,我个人猜测可能是 mmap 后分配的页对齐的内存使用了更多(也就是大于 glibc 的 10 byte)来存 meta data ,恰巧避免了这个硬件 bug 。 有人使用 eBPF profile 发现 Rust 和 Python 的 fs read 在系统调用的延迟上存在差距,Rust 更慢。 为了解决这个奇怪的性能问题,作者(开源大手子漩涡)和他的开源伙伴(包括了热心网友、国内开源大佬依云和一些内核开发者)使用了 strace, perf, eBPF 等各种性能分析工具,以及分析了各种可能导致性能问题的原因(内存大页、CPU 核亲和性、mmap 分配匿名内存、Linux 启动选项例如 Enable Mitigations、系统调用延迟等)。 有 朋友 告诉我「Intel 前几天刚出了 rep mov 导致的 Dos 漏洞」。 好消息是 FSRM 是微码实现,也许在未来的某一次更新就修好了🥰。 相关链接 Terrible memcpy performance on Zen 3 when using rep movsb
之前讲到了 Linux 是如何启动的,现在就写一个 UEFI 程序可以启动 Linux ,语言选择的是非常火热的 Rust 。 Linux Kernel 经过了这么多年的发展,其实完全有着 boot 的能力,使用 UEFI 启动 Kernel 其实是非常简单的一件事情,不再需要像以前 BIOS 启动老版本内核一样要把内核加载到某个内存地址,把参数放到某个内存地址,再将这个地址放到寄存器中等等复杂操作。 ...
“pull oneself up by one’s bootstraps.” 拽着鞋带把自己拉起来 大家在安装 Arch Linux 或者其他 Linux 发行版时,可能会看到很多有关启动或者引导的名词,例如 BIOS 、UEFI 、GRUB 、ESP 、GPT 、LBA 、MBR 等等。有些名词比较熟悉,有些就会一头雾水,今天就来讲讲这些名词。 ...
最近发现 Windows 这几个月开机不超过 10 次,寻思着将 Windows 中的空间挪一点到 Linux 中来。说干就干,在 Windows 里面划出来了 80 GB 的空间。 遗憾地,这 80 GB 空间物理上在我需要扩容的空间的前面,由于开头的扇区存放有很多元数据,因此是不能简单扩容的,只能寻求其他的方法。 ...