首页 > 其他分享 >percpu 读写信号量 【ChatGPT】

percpu 读写信号量 【ChatGPT】

时间:2023-12-10 12:44:25浏览次数:45  
标签:rw 读取 percpu 读写 信号量 ChatGPT 锁定

"Percpu rw semaphores" 是一种新的读写信号量设计,针对读取操作进行了优化。

传统的读写信号量存在一个问题,即当多个核心获取读取锁时,包含信号量的缓存行在各个核心的 L1 缓存之间反复传输,导致性能下降。

读取锁定非常快速,它使用 RCU,并且在锁定和解锁路径中避免了任何原子指令。另一方面,写入锁定非常昂贵,它调用 synchronize_rcu(),可能需要数百毫秒的时间。

该锁使用 "struct percpu_rw_semaphore" 类型声明。锁通过 percpu_init_rwsem 进行初始化,成功时返回 0,分配失败时返回 -ENOMEM。必须使用 percpu_free_rwsem 释放锁,以避免内存泄漏。

使用 percpu_down_read、percpu_up_read 进行读取锁定,使用 percpu_down_write、percpu_up_write 进行写入锁定。

优化读写锁的 RCU 使用思路由 Eric Dumazet [email protected] 提出。代码由 Mikulas Patocka [email protected] 编写。

标签:rw,读取,percpu,读写,信号量,ChatGPT,锁定
From: https://www.cnblogs.com/pengdonglin137/p/17892403.html

相关文章

  • 保持内核代码的可抢占安全 【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/locking/preempt-locking.html在可抢占内核下的适当锁定:保持内核代码的可抢占安全作者[email protected]介绍可抢占内核会引发新的锁定问题。这些问题与SMP下的问题相同:并发性和可重入性。幸运的是,Linux可抢占内核模型利......
  • 序列计数器和顺序锁 【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/locking/seqlock.html#序列计数器和顺序锁介绍序列计数器是一种具有无锁读取器(只读重试循环)和无写入者饥饿的读者-写者一致性机制。它们用于很少写入数据的情况(例如系统时间),其中读者希望获得一致的信息集,并且愿意在信息发生变化时重试......
  • 锁定课程 【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/locking/spinlocks.html锁定课程课程1:自旋锁用于锁定的最基本原语是自旋锁:staticDEFINE_SPINLOCK(xxx_lock);unsignedlongflags;spin_lock_irqsave(&xxx_lock,flags);...临界区域...spin_unlock_irqrestore(&xxx_lock,fl......
  • RT-mutex 实现设计【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/locking/rt-mutex-design.htmlRT-mutex实现设计版权所有(c)2006StevenRostedt根据GNU自由文档许可证第1.2版许可本文档试图描述rtmutex.c实现的设计。它并不描述rtmutex.c存在的原因。有关此内容,请参阅带PI支持的RT-m......
  • 通用互斥子系统 【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/locking/mutex-design.html通用互斥子系统由[email protected]发起由[email protected]更新互斥锁是什么?在Linux内核中,互斥锁指的是一种特定的锁原语,它在共享内存系统上强制进行串行化,而不仅仅是指学术界......
  • 锁统计 【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/locking/lockstat.html锁统计什么顾名思义,它提供了有关锁的统计信息。为什么因为诸如锁争用之类的问题会严重影响性能。如何Lockdep已经在锁函数中设置了钩子,并将锁实例映射到锁类上。我们在此基础上构建(参见运行时锁正确性验证器)......
  • 运行时锁定正确性验证器 【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/locking/lockdep-design.html锁类该验证器操作的基本对象是“锁”的“类”。“锁”的“类”是一组逻辑上相同的锁,即使这些锁可能有多个(可能有成千上万个)实例化。例如,inode结构中的锁是一个类,而每个inode都有自己的该锁类的实例化。验......
  • Locking (ChatGPT)
    原文:https://www.kernel.org/doc/html/latest/locking/index.html锁定锁类型及其规则运行时锁正确性验证器锁统计信息内核锁折磨测试操作通用互斥子系统实时互斥锁实现设计带有PI支持的实时互斥锁子系统序列计数器和顺序锁锁定教训无伤害/等待死锁安全互斥锁设计在......
  • 锁类型及其规则 【ChatGPT】
    https://www.kernel.org/doc/html/latest/locking/locktypes.html锁类型及其规则介绍内核提供了各种锁原语,可以分为三类:睡眠锁CPU本地锁自旋锁本文概念上描述了这些锁类型,并提供了它们的嵌套规则,包括在PREEMPT_RT下的使用规则。锁类别睡眠锁睡眠锁只能在可抢占的......
  • RDMA 控制器 【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/admin-guide/cgroup-v1/rdma.htmlRDMA控制器1.概述1-1.什么是RDMA控制器?RDMA控制器允许用户限制给定一组进程可以使用的RDMA/IB特定资源。这些进程是使用RDMA控制器进行分组的。RDMA控制器定义了可以为cgroup的进程限制......