`

_spin_count

阅读更多

欲获取锁存器的进程基本上使用 Willing-to-wait 模式。 Willing-to-wait

式就是一直等到获取锁存器为止的意思。 进程若在获取锁存器过程中失败,
则循环适当的次数, 并试图重新获取锁存器, 它的循环次数与
_SPIN_COUNT
(缺省值是
2000 )参数值相同。将此以代码表示则如下:

function process_get_latch()    
{    
int result=get_latch();    
if(result == SUCCESS)    
{    
return SUCCESS;    
}    
else if(result == FAIL)    
{    
- 如果锁存器获得失败, 则重新尝试与_SPIN_COUNT 相同的次数。    
for(i=1; i<=_SPIN_COUNT; i++)    
{    
burn_cpu(); - 设计成一定时间内消耗 CPU。    
result=get_latch();      if(result == SUCCESS) return SUCCESS;    
}    
- 循环_SPIN_COUNT 相同次数后, 若没能获得则进入睡眠状态。   
sleep();    
}    
}  

 

 

分享到:
评论

相关推荐

    Oracle数据库性能优化实务闩锁及闩锁优化.pptx

    优化LATCH性能时,需要注意CPU自旋可能导致的资源消耗,以及调整_spin_count参数来平衡CPU使用和等待事件。 7. 调整_LATCH参数:根据系统负载和性能瓶颈,可以调整如_spin_count这样的参数,以适应不同工作场景。...

    Oracle数据库性能优化实务_闩锁及闩锁优化.pptx

    因此,调整数据库参数如_spin_count需要谨慎,因为它直接影响CPU使用和等待事件。 在进行闩锁优化时,需要综合考虑以下几个方面: 1. 减少不必要的锁竞争,通过合理的设计和优化避免高并发下的锁冲突。 2. 分析v$...

    latch Contention

    本文提供了Oracle RDBMS如何利用锁(latches)保护共享内存(SGA)的概述、常见的锁竞争原因及其解决方案,并总结了Quest Software进行的一些研究,该研究表明调整(现在是未公开的参数)`_spin_count`能够有效地缓解...

    latch相关内容讲解

    Latch SPIN_COUNT 参数(在Oracle 7中称为_LATCH_SPIN_COUNT)用于控制进程在等待Latch时的自旋次数。合理设置该参数可以帮助减少上下文切换开销,提高系统性能。根据系统的具体需求调整该参数是非常重要的。 总之...

    我们用一个等宽字体.pdf

    - `Count_t dwInterval`: 等待间隔(毫秒)。 - `Id_t dwParentThreadId`: 父线程的线程唯一标识。 - `Id_t dwThreadId`: 当前任务的线程唯一标识。 - `Bool_t bInitFailed`: 线程初始化是否失败。 - `Bool_t ...

    Oracle性能诊断之——Latch free

    - **调整并发控制参数**:根据实际情况调整与并发控制相关的参数,如`_spin_count`,可以优化Latch的获取策略,减少不必要的等待时间。 - **优化SQL语句和应用程序逻辑**:避免不必要的数据锁定和过度的并发访问,...

    spin和promela简介

    ### spin和promela简介 #### 一、Spin与Promela概述 **Spin**(Simple Promela Interpreter)是一款广泛应用于软件验证领域的工具,主要用于检测并行系统中的错误,特别是那些难以发现的竞争条件等并发问题。而**...

    linux 内核同步机制

    一个经典的例子就是变量`very_important_count`的递增操作。假设两个进程分别对这个变量进行递增操作,如果没有适当的同步机制,结果可能并不是预期的+2。例如: - 进程A读取`very_important_count`的值为X; - ...

    Linux内核中的同步和互斥分析报告

    Linux内核提供了多种机制来支持进程间的同步与互斥,其中两种常用的方法是信号量(semaphore)机制和自旋锁(spin_lock)机制。本篇报告将深入探讨Linux内核中的信号量机制,并对其工作原理进行详细解析。 #### 二...

    Linux同步互斥机制

    1. 将 semaphore 的 count 递减 1,如果 count 小于 0,则当前进程被阻塞。 2. 如果 count 小于 0,当前进程将被添加到睡眠队列中,并将 sleepers 计数器递增。 3. 在睡眠队列中,当前进程将被阻塞,直到 semaphore ...

    linux锁机制分析

    例如,在一个简单的计数器增加操作 `very_important_count++` 中,如果没有适当的同步措施,多个任务并发执行此操作可能导致最终的计数结果不准确。这种由于任务执行顺序不确定而导致的问题称为**竞态条件**(Race ...

    pt7c4307 驱动

    static int rtc_read_proc(char *page, char **start, off_t off, int count, int *eof, void *data) { char *p = page; int len; struct rtc_time tm; read_time(&tm); //printk("RTC ... %d\n",xtime.tv_...

    硬盘SMART检测参数详解.pdf

    * 05(005)Reallocated_Sector_Count 重分配扇区数量 * 07(007)Seek_Error_Rate 寻道错误率 * 09(009)Power_On_Hours 硬盘总运行时间 * 0A(010)Spin_Up_Time 硬盘启动时间 * 0B(011)Spin_Up_Time 硬盘启动...

    LINUX内核中的GCC特性

    LOCK_COUNT - 1]` 将数组的所有元素初始化为 `SPIN_LOCK_UNLOCKED` 值。 #### 三、优化扩展 除了功能性扩展之外,GCC 还提供了一系列优化扩展,这些扩展可以帮助开发者生成更高效、更紧凑的代码。虽然本文没有...

    进程切换分析(3):同步处理.pdf

    在进程切换过程中,spin lock的使用尤为重要,因为它保护了runqueue队列不被并发修改。例如,X进程在b点获取锁,然后在Y进程的c点释放锁,同时开启中断。这种跨进程的同步操作保证了数据一致性。 至于是否可以在...

Global site tag (gtag.js) - Google Analytics