小红花·文摘
  • 首页
  • 广场
  • 排行榜🏆
  • 直播
  • FAQ
Dify.AI
Jan Kristof Nidzwetzki:PostgreSQL自旋锁的eBPF追踪

PostgreSQL采用进程架构,每个连接由独立进程处理。自旋锁用于保护共享资源,减少上下文切换带来的延迟,并在竞争时自适应回退以降低CPU使用。本文介绍了自旋锁的实现及pg_spinlock_tracer监控工具的使用。

Jan Kristof Nidzwetzki:PostgreSQL自旋锁的eBPF追踪

Planet PostgreSQL
Planet PostgreSQL · 2026-02-08T00:00:00Z

本文讨论了Linux内核中的自旋锁和读写锁的类型及规则。自旋锁分为raw_spinlock_t和spinlock_t,前者为严格自旋锁,后者在非抢占内核中与前者语义相同。自旋锁的关键区段需禁用抢占或中断,以避免自旋等待被抢占。文章还提及相关源代码文件和结构体定义。

自旋锁实现

shrik3
shrik3 · 2025-05-13T09:48:17Z

CONFIG_DEBUG_SPINLOCK是Linux内核配置选项,建议启用以捕捉自旋锁初始化缺失及其他错误。最好与NMI监视器结合使用,以调试自旋锁死锁问题。

CONFIG_DEBUG_SPINLOCK

shrik3
shrik3 · 2025-05-13T09:09:29Z

文章讨论了读写锁的实现,区分了PREEMPT_RT和非PREEMPT_RT内核的差异。非PREEMPT_RT内核使用自旋锁实现公平的读写锁,而PREEMPT_RT内核则基于rt_mutex,确保写者不会饿死,并介绍了相关数据结构和锁的公平性。

读写锁实现

shrik3
shrik3 · 2025-05-13T09:07:32Z

PAUSE指令优化自旋等待循环性能,减少内存顺序冲突和功耗,提升自旋锁性能,降低处理器在等待资源时的能耗。

IA32指令与锁的微架构

shrik3
shrik3 · 2025-05-10T19:15:18Z

在关键区域内,Linux内核通过自旋锁禁用内核抢占,单处理器系统中自旋锁仅影响内核抢占的启用与禁用。

Linux内核同步(进行中)

shrik3
shrik3 · 2025-05-08T20:44:24Z
CPU 使用率高就一定有效率吗?

高CPU使用率并不代表高效率。自旋锁在高并发情况下表现低效,尽管CPU使用率高,但产出却低。MySQL通过优化自旋锁来提升性能,指出内存速度与CPU发展的不匹配是主要瓶颈。

CPU 使用率高就一定有效率吗?

plantegg
plantegg · 2025-01-09T09:30:03Z
「Kernel」Linux kernel lab 浅浅跟随

本文介绍了Linux内核模块的创建与调试,重点在于键盘中断处理。通过实现键盘驱动,学习请求I/O端口、注册中断处理程序、读取扫描码并将ASCII字符存储到缓冲区。实验还包括使用自旋锁和循环缓冲区,以确保数据在用户空间的可用性。

「Kernel」Linux kernel lab 浅浅跟随

ネコのメモ帳
ネコのメモ帳 · 2024-07-14T00:00:00Z

互斥锁用于控制多个线程对共享资源的访问,条件变量用于等待特定条件的发生,读写锁允许多个线程读取但只允许一个线程写入,自旋锁适用于锁的持有时间短的情况,信号量用于进程或线程间的同步和互斥。

详解linux多线程——互斥锁、条件变量、读写锁、自旋锁、信号量

良许Linux教程网
良许Linux教程网 · 2024-05-03T14:13:25Z

互斥锁用于控制共享资源访问,具有原子性、唯一性和非繁忙等待特点。条件变量与互斥锁同时使用,用于等待特定条件发生。读写锁允许多个线程同时读取,但只允许一个线程写入。自旋锁适用于锁的持有时间较短的情况,阻塞后会忙等待。信号量用于进程或线程间的同步和互斥。

详解linux多线程——互斥锁、条件变量、读写锁、自旋锁、信号量

良许Linux教程网
良许Linux教程网 · 2024-05-01T12:57:25Z

Go语言标准库中的map数据类型不是线程安全的,解决方法有map数据类型+锁、sync.Map对象或分段锁。自旋锁可以减少CPU空转带来的资源浪费,性能较好。分段锁提高系统并发性能,但增加锁冲突概率和维护开销。sync.Map性能较低,分段锁性能最好。

Go 线程安全 map 方案选型

蛮荆
蛮荆 · 2023-06-25T00:00:00Z

死锁是指两个或多个进程因互相持有对方所需的资源而处于等待状态,导致程序停止运行。死锁处理方法包括被动策略和主动策略。活锁是指线程无法取得需要的资源而一直重试,可以通过引入随机性和系统时间戳来避免。饥饿是指进程因无法获取所需资源而无法执行,可以通过公平调度、优先级反转和限制等待时间来处理。自旋锁是一种减少线程切换开销的互斥锁实现方式。

死锁、活锁、饥饿、自旋锁

蛮荆
蛮荆 · 2023-06-19T00:00:00Z
  • <<
  • <
  • 1 (current)
  • >
  • >>
👤 个人中心
在公众号发送验证码完成验证
登录验证
在本设备完成一次验证即可继续使用

完成下面两步后,将自动完成登录并继续当前操作。

1 关注公众号
小红花技术领袖公众号二维码
小红花技术领袖
如果当前 App 无法识别二维码,请在微信搜索并关注该公众号
2 发送验证码
在公众号对话中发送下面 4 位验证码
友情链接: MOGE.AI 九胧科技 模力方舟 Gitee AI 菜鸟教程 Remio.AI DeekSeek连连 53AI 神龙海外代理IP IPIPGO全球代理IP 东波哥的博客 匡优考试在线考试系统 开源服务指南 蓝莺IM Solo 独立开发者社区 AI酷站导航 极客Fun 我爱水煮鱼 周报生成器 He3.app 简单简历 白鲸出海 T沙龙 职友集 TechParty 蟒周刊 Best AI Music Generator

小红花技术领袖俱乐部
小红花·文摘:汇聚分发优质内容
小红花技术领袖俱乐部
Copyright © 2021-
粤ICP备2022094092号-1
公众号 小红花技术领袖俱乐部公众号二维码
视频号 小红花技术领袖俱乐部视频号二维码