首页 > 编程知识 正文

linux共享内存大小限制,gdb怎么看进程堆栈信息

时间:2023-05-03 11:59:48 阅读:163715 作者:3010

【IPC查询资源】

查看系统正在使用的IPC资源

[root@wzxaini9~~]#IPCs

----sharedmemorysegments------ sharedmemorysegments

keyshmidownerpermsbytesnattchstatus

------semaphore arrays------ semaphore arrays

keysemidownerpermsnsems

0x000000000229376Weber6001

----- -消息队列-----消息队列

kymsqidownerpermsused-bytes消息

单独查询IPC资源:

$ipcs -m显示系统使用的IPC共享内存资源

显示$ipcs -q系统使用的IPC队列资源

$ipcs -s显示系统使用的IPC信号量资源

确认IPC资源被谁占用

示例:需要查看是否有ipckey(51036 )被占用;

1、先用计算器转换成十六进制:

51036-c75c

2、如果知道共享内存被:占用

$ipcs-m|grepc75c

0x 0000 c 75 c 40403197 tdea 36665368709122

3、如果不知道,直接找:

$ipcs|grepc75c

0x 0000 c 75 c 40403197 tdea 36665368709122

0x0000c75c5079070tdea36664

【系统IPC参数查询】

[root@wzxaini9~~]#IPCs-l

------sharedmemorylimits------ sharedmemorylimits

maxnumberofsegments=4096

maxsegsize(kbytes )=4194303

maxtotalsharedmemory(kbytes )=1073741824

最小大小(bytes )=1

------semaphore limits------ semaphore limits

maxnumberofarrays=128

maxsemaphoresperarray=250

maxsemaphoressystemwide=32000

maxopspersemopcall=32

semaphoremaxvalue=32767

------- messages 3360 limits------------------消息3360 limits

maxqueuessystemwide=2048

maxsizeofmessage(bytes )=524288

defaultmaxsizeofqueue(bytes )=5242880

根据上述输出,目前该系统允许的最大内存为1073741824kb,最多可以使用128个信号量,每条消息的最大长度为524288字节;

【IPC系统参数的变更】

[ root @ wzx aini9~~] # cat/etc/sysctl.conf

单个消息的最大长度

kernel.msgmax=524288

#消息队列的最大字节数

#524288*10

kernel.msgmnb=5242880

最大消息队列数

kernel.msgmni=2048

#共享内存区域的最大字节数

kernel.shmmax=17179869184

#整个系统的共享存储器id的最大数量

kernel.shmmni=4096

#每个信号的最大信号数系统范围内的最大信号数每个信号支持的最大操作数系统范围内的最大信号数

#此参数是系统缺省参数,不需要更改

#kernel.sem=*

kernel.sem=2503200032128

显示没有标志的ipcs :的输出:

[root@wzxaini9~~]#IPCs

ipcstatusfrom/dev/memasofmonaug 1415336003360461989

TID

       KEY        MODE       OWNER     GROUP

Message Queues:

q       0    0x00010381 -Rrw-rw-rw-   root      system

q   65537    0x00010307 -Rrw-rw-rw-   root      system

q   65538    0x00010311 -Rrw-rw-rw-   root      system

q   65539    0x0001032f -Rrw-rw-rw-   root      system

q   65540    0x0001031b -Rrw-rw-rw-   root      system

q   65541    0x00010339--rw-rw-rw-    root      system

q       6    0x0002fe03 -Rrw-rw-rw-   root      system

Shared Memory:

m   65537    0x00000000 DCrw-------   root      system

m  720898    0x00010300 -Crw-rw-rw-   root      system

m   65539    0x00000000 DCrw-------   root      system

Semaphores:

s  131072    0x4d02086a --ra-ra----   root      system

s   65537    0x00000000 --ra-------   root      system

s 1310722    0x000133d0 --ra-------   7003      30720

【清除IPC资源】

使用ipcrm 命令来清除IPC资源:这个命令同时会将与ipc对象相关联的数据也一起移除。当然,只有root用户,或者ipc对象的创建者才有这项权利;

ipcrm用法:

ipcrm -M shmkey  移除用shmkey创建的共享内存段

ipcrm -m shmid    移除用shmid标识的共享内存段

ipcrm -Q msgkey  移除用msqkey创建的消息队列

ipcrm -q msqid  移除用msqid标识的消息队列

ipcrm -S semkey  移除用semkey创建的信号

ipcrm -s semid  移除用semid标识的信号

清除当前用户创建的所有的IPC资源:

ipcs -q | awk '{ print "ipcrm -q "$2}' | sh > /dev/null 2>&1;

ipcs -m | awk '{ print "ipcrm -m "$2}' | sh > /dev/null 2>&1;

ipcs -s | awk '{ print "ipcrm -s "$2}' | sh > /dev/null 2>&1;

【综合应用】

查询user1用户环境上是否存在积Queue现象

1、查询队列Queue:

[root@wzxaini9 ~]# ipcs -q

------ Message Queues --------

key        msqid      owner      perms      used-bytes   messages

0x49060005 58261504   user1    660        0            0

0x4f060005 58294273   user1    660        0            0

...

2、找出第6列大于0的服务:

[root@wzxaini9 ~]# ipcs -q |grep user1 |awk '{if($5>0) print $0}'

0x00000000 1071579324 user1       644        1954530      4826

0x00000000 1071644862 user1       644        1961820      4844

0x00000000 1071677631 user1       644        1944810      4802

0x00000000 1071710400 user1       644        1961820      4844

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。