## 近期 Linux 内核变更可能对 PostgreSQL 有益
像 PostgreSQL 这样的开源项目很大程度上依赖于 Linux 内核,但及时了解相关的内核更新可能具有挑战性。本文重点介绍了近年来可能改善 PostgreSQL 性能和功能的内核变更,旨在引发讨论和潜在集成。
关键变更包括**非缓存缓冲 IO**(使用 `RWF_DONTCACHE` 标志),这可以在内存压力下提高性能,以及 NVMe/SCSI 设备的**原子写入**(使用 `RWF_ATOMIC`),可能消除当前由全页镜像等功能解决的“撕裂页”问题。
进一步的开发利用**BPF(Berkeley Packet Filter)**进行内核定制。这包括一个新的 `cachestat` 系统调用,用于更准确的页面缓存监控——可能改善索引扫描估计,以及 `sched_ext` & `cache_ext`,它们允许针对数据库工作负载(例如优先处理 OLTP 而不是分析查询)定制调度和页面缓存驱逐策略。最后,正在进行通过 BPF 定制 io_uring 和 OOM killer 的提案,为 I/O 和内存管理提供进一步的控制。
虽然某些功能需要直接 IO 并且可能无法立即移植,但这些内核进步为 PostgreSQL 优化和开发提供了令人兴奋的可能性。作者鼓励社区探索这些变更并提供反馈。
## Commodore 64 光之谜:基于精灵的增强
这个项目重制了Commodore 64版本的《光之谜》益智游戏,目标是达到与NES版本相似的视觉效果。核心挑战在于扩展精灵的使用——C64的VIC-II芯片仅支持8个精灵,而实现所需的按钮阴影和动画则需要33个。
解决方案涉及巧妙的精灵复用和在屏幕渲染期间的关键时序操作。现有的铆钉和阴影精灵被重新利用,并添加了新的精灵用于单元格的阴影效果。中断被策略性地使用——总共八个——以更新精灵位置、图案,并在扫描线基础上启用/禁用精灵。
这需要重新组织精灵数据以实现高效更新,并修改中断处理程序以管理复杂的时间安排。字符图形也被改进,切换回系统字体以允许动画按钮标签。
虽然显著增加了代码量,但这个迭代过程展示了显示能力的增量改进,将C64硬件推向了极限。该项目强调了探索中间步骤和完善技术的重要性,即使对于看似微不足道的游戏玩法增强也是如此。
## Arm 的 Cortex X925:桌面性能的竞争者
多年来,AMD 和 Intel 在高性能 CPU 领域占据主导地位,凭借高时钟和复杂的内核。Arm 传统上专注于功耗效率,但一直在稳步提高内核的复杂性。现在,凭借 Nvidia GB10 芯片中的 Cortex X925,Arm 在桌面实现中实现了与 AMD Zen 5 和 Intel Lion Cove 性能的对等。
X925 是一个巨大的、10 宽内核,优先考虑性能而非功耗,其重新排序能力超过 Zen 5,并且 L2 缓存可与 Intel 的 P 核相媲美。它具有先进的分支预测、大型的重排序缓冲区(约 525 条指令)以及一个能够每周期处理 10 条指令的强大前端。
虽然在许多 SPEC CPU2017 整数工作负载中表现出色,与 Intel 和 AMD 互有胜负,但由于 aarch64 指令集所需的指令计数较高,X925 在浮点测试中略逊于 Zen 5。尽管如此,其高 IPC 弥补了适度的 4 GHz 时钟速度。
Arm 的成功表明在桌面领域存在一种可行的替代方案,但仍然存在挑战——包括优化游戏工作负载、解决 x86 软件生态系统以及扩展 L3 缓存容量。尽管如此,Cortex X925 标志着 Arm 的一项重大成就,并有望在 CPU 市场上增加竞争。
## Pico Micro Mac:树莓派上的微型麦金托什
这个项目将经典的麦金托什体验带到树莓派Pico上,利用Matt Evans的Pico Micro Mac固件。该构建灵感来自Ron’s Computer Videos和Action Retro的设置,输出到640x480 VGA显示器,并支持USB键盘/鼠标输入。
最初的麦金托什拥有128KB的RAM,而这个Pico版本拥有208KB——增加了63%!最新的适配板(V3)通过集成的microSD卡支持和无焊接Pico WH兼容性简化了构建。设置包括将.uf2文件(固件)和.img文件(操作系统)分别刷入Pico和microSD卡。
然而,Pico有限的SRAM限制了应用程序的大小;较大的程序或模拟器(如Apple II)可能由于内存不足而失败。目前不支持声音。尽管存在这些限制,成本约为20美元,Pico Micro Mac提供了一种引人入胜且经济实惠的方式来体验早期的麦金托什计算,并充当了很好的学习工具。