• 内核参数SEMMSL SEMMNS SEMOPM SEMMNI参数的设置


    内核参数SEMMSL SEMMNS SEMOPM SEMMNI参数的设置

     

    这四个参数自己一直没搞清楚

    今天问了下同事,大概整了一下,后面会再补充。

    以下是linux文档上的说明:

    /proc/sys/kernel/sem (since Linux 2.4)

        This file contains 4 numbers defining limits for System V IPC semaphores.  These fields are, in order:

    SEMMSL  The maximum semaphores per semaphore set.

    SEMMNS  A system-wide limit on the number of semaphores in all semaphore sets.

    SEMOPM  The maximum number of operations that may be specified in a semop(2) call.

    SEMMNI  A system-wide limit on the maximum number of semaphore identifiers.

    semaphore set:信号量集。

    semaphore :信号量。

    自己根据这个说明,画了一个图。

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    SEMMSL,SEMOPM:设置process+10

    SEMMNI:设置为100。这个参数决定了操作系统启动时初始化信号集的个数。

    SEMMNS:SEMMSL*SEMMNI

     SEMOPM主要的限制体现在:                             

         1.lgwr写完之后通知应用进程的过程中,也就是主要影响log file sync(如设置250,一次semops最多可以通知250个应用进程,当应用commit厉害时,semops会大大增加,会到影响系统性能)。

        2.发生大规模enqueue lock时,通知等待在此锁资源上的进程(如果有500个进程等待同一个锁,则需要进行2次semops调用,来通知等待的进程,锁可以使用了)。

    补充:SEMOPM是一个系统调用,类似的还有semtimedop调用。

    可以跟踪一下oracle的lgwr进程,可以看到秒隔3秒调用一次semtimedop,是一个超时调用,当semtimedop()调用致使lgwr进程进入睡眠,因为logbuffer在空闲的情况下有一个3秒刷一次的机制:

    [oracle@fd_perf4 ~]$ ps -ef|grep lgwr

    oracle   15341  1934  0 19:49 pts/0    00:00:00 grep lgwr

    oracle   15445     1  0  2010 ?        00:14:06 ora_lgwr_fd_perf4

    [oracle@fd_perf4 ~]$ strace -p 15445

    Process 15445 attached – interrupt to quit

    times(NULL)                             = 2742619382

    semtimedop(98304, 0x7fbfffde70, 1, {1, 420000000}) = -1 EAGAIN (Resource temporarily unavailable)

    times(NULL)                             = 2742619524

    times(NULL)                             = 2742619524

    times(NULL)                             = 2742619524

    semtimedop(98304, 0x7fbfffde70, 1, {3, 0}) = -1 EAGAIN (Resource temporarily unavailable)

    times(NULL)                             = 2742619824

    times(NULL)                             = 2742619824

    getrusage(RUSAGE_SELF, {ru_utime={237, 721860}, ru_stime={608, 380512}, …}) = 0

    getrusage(RUSAGE_SELF, {ru_utime={237, 721860}, ru_stime={608, 380512}, …}) = 0

    times(NULL)                             = 2742619824

    semtimedop(98304, 0x7fbfffde70, 1, {3, 0}) = -1 EAGAIN (Resource temporarily unavailable)

    times(NULL)                             = 2742620124

    times(NULL)                             = 2742620124

    times(NULL)                             = 2742620124

  • 相关阅读:
    【豆科基因组】普通豆/菜豆/四季豆Common bean (Phaseolus vulgaris L.) 基因组
    【豆科基因组】利马豆/洋扁豆Lima bean(Phaseolus lunatus L.)基因组2021NC
    工作流大大批量报错
    django中request参数
    java笔记(二)----详解装箱与拆箱
    java笔记(一)----基础知识
    Navicat 快捷键
    ant+Jacoco 统计tomcat远程部署后项目接口自动化测试或者功能测试代码覆盖率
    安全测试:BurpSuite 学习使用教程(转)
    耗电量测试(转)
  • 原文地址:https://www.cnblogs.com/jimeper/p/3141975.html
Copyright © 2020-2023  润新知