手机显卡共享内存好不好和非显卡共享内存好不好哪个好

也许你感兴趣
1. 2. 3. 4. 5. 6. 7. 8. 9. 10.◇本站云标签
◇热点推荐Linux不能删除共享内存 - 推酷
Linux不能删除共享内存
在VMware中,CentOS release 6.3 (Final)系统:
[root@localhost ~]# uname -a
Linux localhost.localdomain 2.6.32-279.el6.i686 #1 SMP Fri Jun 22 10:59:55 UTC
i686 i386 GNU/Linux系统中,出现一个问题:
Linux不能删除共享内存?
[root@localhost ~]# ipcs -m
------ Shared Memory Segments --------
key & & & &shmid & & &owner & & &perms & & &bytes & & &nattch & & status & & &
0x5008 & &root & & & 777 & & & &5242880 & &3 & & & & &dest & & & &&
0x898 & & root & & & 777 & & & &5242880 & &1 & & & & &dest & & & &&
0x4115 & &root & & & 777 & & & &5242880 & &17 & & & & dest & & & &&
0x5812 & &root & & & 777 & & & &5242880 & &10 & & & & dest & & & &&
0x8405 & &root & & & 777 & & & &5242880 & &12 & & & & dest & & & &&
0x0102 & &root & & & 777 & & & &5242880 & &7 & & & & &dest & & & &&
执行ipcrm一直删除,但却始终删除不了。
[root@localhost ~]# ipcrm -m 1835008
[root@localhost ~]# ipcs -m
------ Shared Memory Segments --------
key & & & &shmid & & &owner & & &perms & & &bytes & & &nattch & & status & & &
0x5008 & &root & & & 777 & & & &5242880 & &3 & & & & &dest & & & &&
0x898 & & root & & & 777 & & & &5242880 & &1 & & & & &dest & & & &&
0x4115 & &root & & & 777 & & & &5242880 & &17 & & & & dest & & & &&
0x5812 & &root & & & 777 & & & &5242880 & &10 & & & & dest & & & &&
0x8405 & &root & & & 777 & & & &5242880 & &12 & & & & dest & & & &&
0x0102 & &root & & & 777 & & & &5242880 & &7 & & & & &dest &&
结果还是一样,删除不了
这时候的key跟平常不一样,key的值是0x。找了很多资料,基本上只有几个原因:1.权限问题;2.进程占用。
我本身就是root,权限基本上是不沾边了。
救世主命令:
[root@localhost seomanagerd]# ps -aux
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
USER & & & PID %CPU %MEM & &VSZ & RSS TTY & & &STAT START & TIME COMMAND
root & & & & 1 &0.0 &0.1 &
? & & & &Ss & 13:47 & 0:02 /sbin/init
root & & & & 2 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:00 [kthreadd]
root & & & & 3 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:00 [migration/0]
root & & & & 4 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:00 [ksoftirqd/0]
root & & & & 5 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:00 [migration/0]
root & & & & 6 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:00 [watchdog/0]
root & & & & 7 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:00 [migration/1]
root & & & & 8 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:00 [migration/1]
root & & & & 9 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:00 [ksoftirqd/1]
root & & & &10 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:00 [watchdog/1]
root & & & &11 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:03 [events/0]
root & & & &12 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:02 [events/1]
root & & & &13 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:00 [cgroup]
root & & & &14 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:00 [khelper]
root & & & &15 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:00 [netns]
root & & & &16 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:00 [async/mgr]
root & & & &17 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:00 [pm]
root & & & &18 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:00 [sync_supers]
root & & & &19 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:00 [bdi-default]
root & & & &20 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:00 [kintegrityd/0]
root & & & &21 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:00 [kintegrityd/1]
root & & & &22 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:00 [kblockd/0]
root & & & &23 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:00 [kblockd/1]
root & & & &24 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:00 [kacpid]
root & & & &25 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:00 [kacpi_notify]
root & & & &26 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:00 [kacpi_hotplug]
root & & & &27 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:01 [ata/0]
root & & & &28 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:04 [ata/1]
root & & & &29 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:00 [ata_aux]
root & & & &30 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:00 [ksuspend_usbd]
root & & & &31 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:00 [khubd]
root & & & &32 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:00 [kseriod]
root & & & &33 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:00 [md/0]
root & & & &34 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:00 [md/1]
root & & & &35 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:00 [md_misc/0]
root & & & &36 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:00 [md_misc/1]
root & & & &37 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:00 [khungtaskd]
root & & & &38 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:00 [kswapd0]
root & & & &39 &0.0 &0.0 & & &0 & & 0 ? & & & &SN & 13:47 & 0:00 [ksmd]
root & & & &40 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:00 [aio/0]
root & & & &41 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:00 [aio/1]
root & & & &42 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:00 [crypto/0]
root & & & &43 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:00 [crypto/1]
root & & & &48 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:00 [kthrotld/0]
root & & & &49 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:00 [kthrotld/1]
root & & & &50 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:00 [pciehpd]
root & & & &52 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:00 [kpsmoused]
root & & & &53 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:00 [usbhid_resumer]
root & & & &83 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:00 [kstriped]
root & & & 209 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:00 [scsi_eh_0]
root & & & 219 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:03 [scsi_eh_1]
root & & & 253 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:00 [mpt_poll_0]
root & & & 254 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:00 [mpt/0]
root & & & 255 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:00 [scsi_eh_2]
root & & & 349 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:00 [jbd2/sda2-8]
root & & & 350 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:00 [ext4-dio-unwrit]
root & & & 351 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:00 [ext4-dio-unwrit]
root & & & 388 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:00 [flush-8:0]
root & & & 394 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:02 [kauditd]
root & & & 438 &0.0 &0.1 &
? & & & &S&s &13:47 & 0:00 /sbin/udevd -d
root & & & 686 &0.0 &0.0 & & &0 & & 0 ? & & & &S & &13:47 & 0:00 [vmmemctl]
root & & & &0.1 &
? & & & &S& & 13:47 & 0:00 /sbin/udevd -d
root & & & &0.0 & & &0 & & 0 ? & & & &S & &13:48 & 0:00 [jbd2/sda1-8]
root & & & &0.0 & & &0 & & 0 ? & & & &S & &13:48 & 0:00 [ext4-dio-unwrit]
root & & & &0.0 & & &0 & & 0 ? & & & &S & &13:48 & 0:00 [ext4-dio-unwrit]
root & & & &0.0 & & &0 & & 0 ? & & & &S & &13:48 & 0:00 [jbd2/sda8-8]
root & & & &0.0 & & &0 & & 0 ? & & & &S & &13:48 & 0:00 [ext4-dio-unwrit]
root & & & &0.0 & & &0 & & 0 ? & & & &S & &13:48 & 0:00 [ext4-dio-unwrit]
root & & & &0.0 & & &0 & & 0 ? & & & &S & &13:48 & 0:00 [jbd2/sda6-8]
root & & & &0.0 & & &0 & & 0 ? & & & &S & &13:48 & 0:00 [ext4-dio-unwrit]
root & & & &0.0 & & &0 & & 0 ? & & & &S & &13:48 & 0:00 [ext4-dio-unwrit]
root & & & &0.0 & & &0 & & 0 ? & & & &S & &13:48 & 0:00 [jbd2/sda3-8]
root & & & &0.0 & & &0 & & 0 ? & & & &S & &13:48 & 0:00 [ext4-dio-unwrit]
root & & & &0.0 & & &0 & & 0 ? & & & &S & &13:48 & 0:00 [ext4-dio-unwrit]
root & & & &0.0 & & &0 & & 0 ? & & & &S & &13:48 & 0:01 [jbd2/sda7-8]
root & & & &0.0 & & &0 & & 0 ? & & & &S & &13:48 & 0:00 [ext4-dio-unwrit]
root & & & &0.0 & & &0 & & 0 ? & & & &S & &13:48 & 0:00 [ext4-dio-unwrit]
root & & & &0.0 &36440 & 816 ? & & & &Ssl &13:48 & 0:00 /usr/sbin/vmware-vmblock-fuse -o subtype=vmware-vmblock,default_permissions,
root & & & &0.3 &2 ? & & & &S & &13:48 & 0:17 /usr/sbin/vmtoolsd
root & & & &0.3 &1 ? & & & &Ss & 13:48 & 0:00 cupsd -C /etc/cups/cupsd.conf
root & & & &0.0 & 2036 & 508 ? & & & &Ss & 13:48 & 0:00 /sbin/portreserve
root & & & &0.1 &3 ? & & & &Sl & 13:48 & 0:00 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5
&0.0 & 2556 & 812 ? & & & &Ss & 13:48 & 0:00 rpcbind
dbus & & & &0.1 &
? & & & &Ss & 13:48 & 0:00 dbus-daemon --system
root & & & &0.4 &2 ? & & & &Ss & 13:48 & 0:00 NetworkManager --pid-file=/var/run/NetworkManager/NetworkManager.pid
root & & & &0.2 &
? & & & &S & &13:48 & 0:00 /usr/sbin/modem-manager
root & & & &0.1 &1 ? & & & &Ss & 13:48 & 0:01 tpvmlpd2
? & & & &S & &13:48 & 0:00 avahi-daemon: running [linux.local]
&0.0 & 3100 & 356 ? & & & &Ss & 13:48 & 0:00 avahi-daemon: chroot helper
root & & & &0.0 & 7252 & 800 ? & & & &Ss & 13:48 & 0:00 /usr/sbin/wpa_supplicant -c /etc/wpa_supplicant/wpa_supplicant.conf -B -u -f
? & & & &Ss & 13:48 & 0:00 rpc.statd
root & & & &0.0 & & &0 & & 0 ? & & & &S & &13:48 & 0:00 [rpciod/0]
root & & & &0.0 & & &0 & & 0 ? & & & &S & &13:48 & 0:00 [rpciod/1]
root & & & &0.0 & 2592 & 492 ? & & & &Ss & 13:48 & 0:00 rpc.idmapd
root & & & &0.0 & 2000 & 600 ? & & & &Ss & 13:48 & 0:00 /usr/sbin/acpid
68 & & & & &0.4 &
? & & & &Ss & 13:48 & 0:00 hald
root & & & &0.1 &
? & & & &S & &13:48 & 0:00 hald-runner
root & & & &0.1 &
? & & & &S & &13:48 & 0:00 hald-addon-input: Listening on /dev/input/event2 /dev/input/event0
root & & & &0.1 &
? & & & &S & &13:48 & 0:03 hald-addon-storage: polling /dev/sr0 (every 2 sec)
68 & & & & &0.1 &
? & & & &S & &13:48 & 0:00 hald-addon-acpi: listening on acpid socket /var/run/acpid.socket
root & & & &0.1 &1 ? & & & &Ssl &13:48 & 0:00 pcscd
root & & & &0.1 &3 ? & & & &Ssl &13:48 & 0:01 automount --pid-file /var/run/autofs.pid
root & & & &0.0 &
? & & & &Ss & 13:48 & 0:00 /usr/sbin/sshd
root & & & &0.1 &
? & & & &S & &13:48 & 0:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysq
&2.9 60 ? & & & &Sl & 13:48 & 0:18 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/us
root & & & &0.2 &1 ? & & & &Ss & 13:48 & 0:00 /usr/libexec/postfix/master
&0.2 &1 ? & & & &S & &13:48 & 0:00 qmgr -l -t fifo -u
root & & & &0.0 & 5164 & 940 ? & & & &Ss & 13:48 & 0:00 /usr/sbin/abrtd
root & & & &0.0 & 5080 & 744 ? & & & &Ss & 13:48 & 0:00 abrt-dump-oops -d /var/spool/abrt -rwx /var/log/messages
root & & & &0.3 &3 ? & & & &Ss & 13:48 & 0:01 php-fpm: master process (/etc/php-fpm.conf)
&0.4 &3 ? & & & &S & &13:48 & 0:00 php-fpm: pool www
&0.4 &3 ? & & & &S & &13:48 & 0:00 php-fpm: pool www
&0.4 &3 ? & & & &S & &13:48 & 0:00 php-fpm: pool www
&0.4 &3 ? & & & &S & &13:48 & 0:00 php-fpm: pool www
&0.4 &3 ? & & & &S & &13:48 & 0:00 php-fpm: pool www
root & & & &0.1 &1 ? & & & &Ss & 13:48 & 0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
&0.2 &1 ? & & & &S & &13:48 & 0:03 nginx: worker process & & & & & & & & &&
root & & & &0.1 &
? & & & &Ss & 13:48 & 0:00 crond
root & & & &0.3 &2 ? & & & &Ss & 13:48 & 0:00 smbd -D
root & & & &0.0 & 2900 & 460 ? & & & &Ss & 13:48 & 0:00 /usr/sbin/atd
root & & & &0.1 &2 ? & & & &S & &13:48 & 0:00 smbd -D
root & & & &0.5 12 ? & & & &Sl & 13:48 & 0:00 libvirtd --daemon
root & & & &0.1 &
? & & & &S& & 13:48 & 0:00 /sbin/udevd -d
root & & & &0.0 & 4128 & 572 ? & & & &S & &13:48 & 0:03 /usr/sbin/cimserver
&0.6 &1 ? & & & &Sl & 13:48 & 0:00 cimservermain --executor-socket 3
nobody & & &0.0 & 2624 & 556 ? & & & &S & &13:48 & 0:00 /usr/sbin/dnsmasq --strict-order --bind-interfaces --pid-file=/var/run/libvi
root & & & &0.0 & 7876 & 752 ? & & & &Ss & 13:48 & 0:00 /usr/sbin/certmonger -S -p /var/run/certmonger.pid
root & & & &0.0 & 1988 & 480 tty1 & & Ss+ &13:48 & 0:00 /sbin/mingetty /dev/tty1
root & & & &0.0 & 1988 & 480 tty2 & & Ss+ &13:48 & 0:00 /sbin/mingetty /dev/tty2
root & & & &0.0 & 1988 & 480 tty3 & & Ss+ &13:48 & 0:00 /sbin/mingetty /dev/tty3
root & & & &0.0 & 1988 & 480 tty4 & & Ss+ &13:48 & 0:00 /sbin/mingetty /dev/tty4
root & & & &0.0 & 1988 & 512 tty5 & & Ss+ &13:48 & 0:00 /sbin/mingetty /dev/tty5
root & & & &0.0 & 1988 & 480 tty6 & & Ss+ &13:48 & 0:00 /sbin/mingetty /dev/tty6
root & & & &0.0 &12912 & 808 ? & & & &S&sl 13:48 & 0:00 auditd
root & & & &0.3 &1 ? & & & &Rs & 13:49 & 0:08 sshd: root@pts/0&
root & & & &0.1 &
pts/0 & &Ss & 13:49 & 0:00 -bash
root & & & &0.3 &1 ? & & & &Ss & 13:49 & 0:00 sshd: root@pts/2&
root & & & &0.3 &1 ? & & & &Ss & 13:49 & 0:00 sshd: root@pts/1&
root & & & &0.1 &
pts/1 & &Ss+ &13:49 & 0:00 -bash
root & & & &0.3 &2 ? & & & &S & &13:49 & 0:11 smbd -D
root & & & &0.1 &
pts/2 & &Ss+ &13:49 & 0:00 -bash
&0.4 &3 ? & & & &S & &13:56 & 0:00 php-fpm: pool www
&0.4 &3 ? & & & &S & &14:35 & 0:00 php-fpm: pool www
&0.4 &3 ? & & & &S & &14:48 & 0:00 php-fpm: pool www
&0.3 &3 ? & & & &S & &14:49 & 0:00 php-fpm: pool www
&0.3 &3 ? & & & &S & &14:50 & 0:00 php-fpm: pool www
&0.3 &3 ? & & & &S & &14:51 & 0:00 php-fpm: pool www
&0.3 &3 ? & & & &S & &14:52 & 0:00 php-fpm: pool www
&0.4 &3 ? & & & &S & &14:53 & 0:00 php-fpm: pool www
&0.4 &3 ? & & & &S & &14:54 & 0:00 php-fpm: pool www
&0.4 &3 ? & & & &S & &14:55 & 0:00 php-fpm: pool www
&0.4 &3 ? & & & &S & &14:56 & 0:00 php-fpm: pool www
&0.4 &3 ? & & & &S & &15:04 & 0:00 php-fpm: pool www
&0.4 &3 ? & & & &S & &15:07 & 0:00 php-fpm: pool www
&0.4 &3 ? & & & &S & &15:08 & 0:00 php-fpm: pool www
&0.4 &3 ? & & & &S & &15:09 & 0:00 php-fpm: pool www
&0.4 &3 ? & & & &S & &15:10 & 0:00 php-fpm: pool www
&0.3 &3 ? & & & &S & &15:15 & 0:00 php-fpm: pool www
&0.3 &3 ? & & & &S & &15:16 & 0:00 php-fpm: pool www
&0.3 &3 ? & & & &S & &15:19 & 0:00 php-fpm: pool www
&0.3 &3 ? & & & &S & &15:20 & 0:00 php-fpm: pool www
&0.3 &3 ? & & & &S & &15:21 & 0:00 php-fpm: pool www
&0.3 &3 ? & & & &S & &15:22 & 0:00 php-fpm: pool www
&0.4 &3 ? & & & &S & &15:23 & 0:00 php-fpm: pool www
&0.4 &3 ? & & & &S & &15:24 & 0:00 php-fpm: pool www
&0.4 &3 ? & & & &S & &15:25 & 0:00 php-fpm: pool www
&0.4 &3 ? & & & &S & &15:26 & 0:00 php-fpm: pool www
&0.4 &3 ? & & & &S & &15:27 & 0:00 php-fpm: pool www
&0.2 &1 ? & & & &S & &15:28 & 0:00 pickup -l -t fifo -u
&0.4 &3 ? & & & &S & &15:29 & 0:00 php-fpm: pool www
&0.4 &3 ? & & & &S & &15:38 & 0:00 php-fpm: pool www
&0.4 &3 ? & & & &S & &15:39 & 0:00 php-fpm: pool www
&0.4 &3 ? & & & &S & &15:41 & 0:00 php-fpm: pool www
&0.4 &3 ? & & & &S & &15:42 & 0:00 php-fpm: pool www
&0.4 &3 ? & & & &S & &15:42 & 0:00 php-fpm: pool www
&0.4 &3 ? & & & &S & &15:43 & 0:00 php-fpm: pool www
&0.4 &3 ? & & & &S & &15:44 & 0:00 php-fpm: pool www
&0.4 &3 ? & & & &S & &15:47 & 0:00 php-fpm: pool www
&0.3 &3 ? & & & &S & &15:56 & 0:00 php-fpm: pool www
&0.3 &3 ? & & & &S & &15:57 & 0:00 php-fpm: pool www
&0.3 &3 ? & & & &S & &15:58 & 0:00 php-fpm: pool www
&0.3 &3 ? & & & &S & &15:59 & 0:00 php-fpm: pool www
nginx & &1 &0.3 &3 ? & & & &S & &16:00 & 0:00 php-fpm: pool www
nginx & &1 &0.3 &3 ? & & & &S & &16:01 & 0:00 php-fpm: pool www
nginx & &1 &0.4 &3 ? & & & &S & &16:03 & 0:00 php-fpm: pool www
nginx & &1 &0.4 &3 ? & & & &S & &16:04 & 0:00 php-fpm: pool www
nginx & &1 &0.4 &3 ? & & & &S & &16:05 & 0:00 php-fpm: pool www
root & & 1 &0.1 &
pts/0 & &R+ & 16:42 & 0:00 ps -aux
发现php-fpm不正常,很多php-fpm服务说明没有退出,于是重启php-fpm服务
[root@localhost seomanagerd]# /etc/init.d/php-fpm restart
Stopping php-fpm: & & & & & & & & & & & & & & & & & & & & &[ &OK &]
Starting php-fpm: & & & & & & & & & & & & & & & & & & & & &[ &OK &]
[root@localhost seomanagerd]# ps -aux
php-fpm只剩下几个了,这时候查看共享内存:
[root@localhost ~]# ipcs -m
------ Shared Memory Segments --------
key & & & &shmid & & &owner & & &perms & & &bytes & & &nattch & & status&
原因就是:共享内存虽然被删除了,但进程仍然占用着共享内存,所以才出现key为0x的现象。
已发表评论数()
&&登&&&陆&&
已收藏到推刊!
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
空间积分0 信誉积分116 UID阅读权限100积分2496帖子精华可用积分2496 专家积分5 在线时间377 小时注册时间最后登录
帖子主题精华可用积分2496 专家积分5 在线时间377 小时注册时间最后登录
论坛徽章:0
通常情况类似于内存池的资料比较多, 但之前开发东西在多进程/多线程混合的情况下寻求缓存解决方案时, 采用了共享内存.
而能对共享内存进行动态再分配的库有一个称之为 libmm 的模块, 但资料很少, 没有采用它. 后来我自己从 eAccelerator
(php的一个缓存扩展) 中找到一个 mm.c , 对它进行了简化和修改, 生成了一个我自己在用的 mm.c/mm.h 现在发布如下,
供有需要的参考, 但应该特别注意的是, 我这里申请的共享内存是一个匿名的内存映射, 只能共享于有亲属关系的进程中, 因
而可以在内存中再直接存放指针数据, 这一点比较方便.
而如果想用在无关系的进程之间, 那必须对代码进行修改, 支持有名的 mmap 或 IPC-shm 以及 IPC-sem 的, 并且在
mmap() 时指定同主进程相当的起始地址, 这个做法非常不值得推荐, mmap() 的起始捆绑地址一般应当由系统进行分配比较好.
好了, 代码如下, 供有需要或有兴趣的参考, 内存申请是由一个线性链表来管理的, 应当能满足大部分应用了
Libmm replacement used by cache design of FTPHP-searchd
Some source codes cut from eAccelerator/PHP
共享内存管理, 改自 eAccelerator 中的 mm.c, 采用 sem 信号量加锁, 线程安全!
使用时包含 mm.h 这个头文件即可, 数据类型 MM 就是这块共享内存的操作句柄类型.
常用 API 介绍:
1. MM *mm_create(size_t size);
& &创建 size (单位bytes) 大小的共享内存空间(此为匿名mmap, 用于父子关系之间的进程)
& &成功返回 MM 指针, 失败返回 NULL
2. void mm_destroy(MM *mm);
& &销毁 mm, 它同时销毁所有的信号量锁, 多进程模型中只允许一次调用, 子进程退出时
& &不必调用该函数, 以免破解整个全局的 mm 结构.
3. mm_lock(MM *mm); mm_unlock(MM *mm);
& &对整个 mm 进行加锁或解锁.
& &注意: 在 mm_malloc 和 mm_free 内部隐蔽地调用了 mm_lock/mm_unlock, 所以务必
& && && &不能已加锁代码段里使用 mm_malloc/mm_free, 否则会造成死锁, 应当改用
& && && &mm_malloc_nolock/mm_free_nolock
4. mm_lock1(MM *mm); mm_unlock1(MM *mm); ... mm_lock4(MM *mm); mm_unlock4(MM *mm);
& &... 这 4 组加锁/解锁之间互不影响, 可用于各类区间操作需加锁时使用.
5. void *mm_malloc(MM *mm, size_t size);
& &void mm_free(MM *mm, void *p);
& &申请和释放内存, 带全局锁
6. void *mm_malloc_nolock(MM *mm, size_t size);
& &void mm_malloc_free(MM *mm, void *p);
& &同上, 但不上锁
罕用的 API:
1. size_t mm_size(MM *mm);
& &获取 mm 在创建时的 size.
2. int mm_protect(MM *mm, int mode);
& &保护 mm , 内部调用 mprotect()
& &mode 值为 MM_PROT_NONE, MM_PROT_READ, MM_PROT_WRITE, MM_PROT_EXEC 的组合
3. size_t mm_maxsize(MM *mm); size_t mm_avaiable(MM *mm);
& &分别返回当前能申请到的最大内存长度和当前可用内存空间余额
4. size_t mm_sizeof(MM *mm, void *p);
& &如果 p 为 mm_malloc 申请的内存, 则该调用可以返回申请时的长度
$Id: mm.h,v 1.3
16:01:25 hightman Exp $
#ifndef __FTPHP_MM__H__
#define& & __FTPHP_MM__H__
#include &sys/types.h&
#ifdef __cplusplus
extern &C& {
#ifndef MM
#define& & MM void
#define& & MM_SEM_NUM& && &&&5
#define& & mm_lock(x)& && &&&_mm_lock(x,0)
#define& & mm_unlock(x)& & _mm_unlock(x,0)
#define& & mm_lock1(x)& && &&&_mm_lock(x,1)
#define& & mm_unlock1(x)& & _mm_unlock(x,1)
#define& & mm_lock2(x)& && &&&_mm_lock(x,2)
#define& & mm_unlock2(x)& & _mm_unlock(x,2)
#define& & mm_lock3(x)& && &&&_mm_lock(x,3)
#define& & mm_unlock3(x)& & _mm_unlock(x,3)
#define& & mm_lock4(x)& && &&&_mm_lock(x,4)
#define& & mm_unlock4(x)& & _mm_unlock(x,4)
#define MM_PROT_NONE 1
#define MM_PROT_READ 2
#define MM_PROT_WRITE 4
#define MM_PROT_EXEC 8
MM *mm_create(size_t size);& && && && && & // create mm by mmap
size_t mm_size(MM *mm);
void mm_destroy(MM *mm);
int _mm_lock(MM *mm, int num);& && && && &// lock this mm
int _mm_unlock(MM *mm, int num);
int mm_protect(MM *mm, int mode);& && &&&// protect the mm to avoid read|write?
size_t mm_available(MM *mm);
size_t mm_maxsize(MM *mm);
void *mm_malloc(MM *mm, size_t size);
void mm_free(MM *mm, void *p);
void *mm_malloc_nolock(MM *mm, size_t size);
void mm_free_nolock(MM *mm, void *p);
size_t mm_sizeof(MM *mm, void *x);
#ifdef __cplusplus
Libmm replacement used by cache design of FTPHP-searchd
Some source codes cut from eAccelerator/PHP
$Id: mm.c,v 1.3
16:01:25 hightman Exp $
#include &sys/types.h&
#include &sys/stat.h&
#include &string.h&
#include &stdio.h&
#include &unistd.h&
#include &fcntl.h&
#include &sys/sem.h&
#include &sys/mman.h&
#include &errno.h&
typedef struct mm_mutex {
&&int semid;
} mm_mutex;
typedef struct mm_free_bucket {
&&size_t size;
&&struct mm_free_bucket *next;
} mm_free_bucket;
typedef struct mm_core {
&&size_t size;
&&void *start;
&&size_t available;
&&mm_mutex *lock;
&&mm_free_bucket *free_list;
} mm_core;
typedef union mm_mem_head {
&&size_t size;
&&double a1;
&&int (*a2)(int);
&&void *a3;
} mm_mem_head;
#define MM_SIZE(sz)& && &&&(sizeof(mm_mem_head)+(sz))
#define PTR_TO_HEAD(p)& & (((mm_mem_head *)(p)) - 1)
#define HEAD_TO_PTR(p)& & ((void *)(((mm_mem_head *)(p)) + 1))
#define MM mm_core
#define& & MM_WORD& & mm_mem_head
#if (defined (__GNUC__) && __GNUC__ &= 2)
#& & define MM_PLATFORM_ALIGNMENT (__alignof__ (MM_WORD))
#& & define MM_PLATFORM_ALIGNMENT (sizeof(MM_WORD))
#define MM_ALIGN(n) (void*)((((size_t)(n)-1) & ~(MM_PLATFORM_ALIGNMENT-1)) + MM_PLATFORM_ALIGNMENT)
#include &mm.h&
/* MM-lock implement */
static int mm_init_lock(mm_mutex *lock) {
&&union semun arg;
&&int n = MM_SEM_NUM;
&&if ((lock-&semid = semget(IPC_PRIVATE, n, IPC_CREAT | IPC_EXCL | S_IRUSR | S_IWUSR)) & 0) {
& & return 0;
&&arg.val = 1;
&&while (n--) {
& & if (semctl(lock-&semid, n, SETVAL, arg) & 0) {
& &&&semctl(lock-&semid, n, IPC_RMID, 0);
&&return 1;
static int mm_do_lock(mm_mutex *lock, int num) {
&&struct sembuf op;
&&op.sem_num = (unsigned short)num;
&&op.sem_op = -1;
&&op.sem_flg = SEM_UNDO;
& & rc = semop(lock-&semid, &op, 1);
&&} while (rc & 0 && errno == EINTR);
&&return (rc == 0);
static int mm_do_unlock(mm_mutex *lock, int num) {
&&struct sembuf op;
&&op.sem_num = (unsigned short)num;
&&op.sem_op = 1;
&&op.sem_flg = SEM_UNDO;
&&if (!semop(lock-&semid, &op, 1))
& &&&return 1;
&&return 0;
static void mm_destroy_lock(mm_mutex *lock) {
&&int n = MM_SEM_NUM;
&&while (n--) {
& & semctl(lock-&semid, n, IPC_RMID, 0);
int _mm_lock(MM *mm, int num) {
&&return mm_do_lock(mm-&lock, num);
int _mm_unlock(MM *mm, int num) {
&&return mm_do_unlock(mm-&lock, num);
/* shared memory implement */
static MM *mm_create_shm(size_t size) {
&&p = (MM *)mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANON, -1, 0);
&&if (p != (MM *)-1) {
& & p-&size = size;
& & p-&start = (char *)p + sizeof(MM);
&&return p;
static void mm_destroy_shm(MM *mm) {
&&if (mm != NULL && mm != (MM *)-1) {
& & munmap(mm, mm-&size);
static void mm_init(MM *mm) {
&&mm-&start = MM_ALIGN(mm-&start);
&&mm-&lock = mm-&start;
&&mm-&start = MM_ALIGN((void *)(((char *)(mm-&start)) + sizeof(mm_mutex)));
&&mm-&available = mm-&size - (((char *)(mm-&start))-(char *)mm);
&&mm-&free_list = (mm_free_bucket *)mm-&start;
&&mm-&free_list-&size = mm-&available;
&&mm-&free_list-&next = NULL;
void *mm_malloc_nolock(MM *mm, size_t size) {
&&if (size & 0) {
& & mm_mem_head *x = NULL;
& & size_t realsize = (size_t) MM_ALIGN(MM_SIZE(size));
& & if (realsize &= mm-&available) {
& && &/* Search for free bucket */
& && &mm_free_bucket *p = mm-&free_list;
& && &mm_free_bucket *q = NULL;
& && &mm_free_bucket *best = NULL;
& && &mm_free_bucket *best_prev = NULL;
& && &while (p != NULL) {
& && &&&if (p-&size == realsize) {
& && && & /* Found free bucket with the same size */
& && && & if (q == NULL) {
& && && && &mm-&free_list = p-&next;
& && && && &x = (mm_mem_head *)p;
& && && & } else {
& && && && &q-&next = p-&next;
& && && && &x = (mm_mem_head *)p;
& && && & }
& && && & break;
& && &&&} else if (p-&size & realsize && (best == NULL || best-&size & p-&size)) {
& && && & /* Found best bucket (smallest bucket with the grater size) */
& && && & best = p;
& && && & best_prev = q;
& && &&&q = p;
& && &&&p = p-&next;
& && &if (x == NULL && best != NULL) {
& && &&&if (best-&size-realsize & sizeof(mm_free_bucket)) {
& && && & realsize = best-&size;
& && && & x = (mm_mem_head *)best;
& && && & if (best_prev == NULL) {
& && && && &mm-&free_list = best-&next;
& && && & } else {
& && && && &best_prev-&next = best-&next;
& && && & }
& && &&&} else {
& && && & if (best_prev == NULL) {
& && && && &mm-&free_list = (mm_free_bucket *)((char *)best + realsize);
& && && && &mm-&free_list-&size = best-&size-realsize;
& && && && &mm-&free_list-&next = best-&next;
& && && & } else {
& && && && &best_prev-&next = (mm_free_bucket *)((char *)best + realsize);
& && && && &best_prev-&next-&size = best-&size-realsize;
& && && && &best_prev-&next-&next = best-&next;
& && && & }
& && && & best-&size = realsize;
& && && & x = (mm_mem_head *)best;
& && &if (x != NULL) {
& && &&&mm-&available -= realsize;
& & if (x != NULL) {
& && &return HEAD_TO_PTR(x);
&&return NULL;
void mm_free_nolock(MM *mm, void *x) {
&&if (x != NULL) {
& & if (x &= mm-&start && x & (void *)((char *)mm + mm-&size)) {
& && &mm_mem_head *p = PTR_TO_HEAD(x);
& && &size_t size = p-&size;
& && &if ((char *)p+size &= (char *)mm + mm-&size) {
& && &&&mm_free_bucket *b = (mm_free_bucket *)p;
& && &&&b-&next = NULL;
& && &&&if (mm-&free_list == NULL) {
& && && & mm-&free_list = b;
& && &&&} else {
& && && & mm_free_bucket *q = mm-&free_list;
& && && & mm_free_bucket *prev = NULL;
& && && & mm_free_bucket *next = NULL;
& && && & while (q != NULL) {
& && && && &if (b & q) {
& && && && &&&next = q;
& && && && &&&break;
& && && && &}
& && && && &prev = q;
& && && && &q = q-&next;
& && && & }
& && && & if (prev != NULL && (char *)prev+prev-&size == (char *)b) {
& && && && &if ((char *)next == (char *)b+size) {
& && && && &&&/* merging with prev and next */
& && && && &&&prev-&size += size + next-&size;
& && && && &&&prev-&next = next-&next;
& && && && &} else {
& && && && &&&/* merging with prev */
& && && && &&&prev-&size += size;
& && && && &}
& && && & } else {
& && && && &if ((char *)next == (char *)b+size) {
& && && && &&&/* merging with next */
& && && && &&&b-&size += next-&size;
& && && && &&&b-&next = next-&next;
& && && && &} else {
& && && && &&&/* don't merge */
& && && && &&&b-&next = next;
& && && && &}
& && && && &if (prev != NULL) {
& && && && &&&prev-&next = b;
& && && && &} else {
& && && && &&&mm-&free_list = b;
& && && && &}
& && && & }
& && &&&mm-&available += size;
size_t mm_maxsize(MM *mm) {
&&size_t ret = MM_SIZE(0);
&&mm_free_bucket *p;
&&if (!mm_lock(mm)) {
& & return 0;
&&p = mm-&free_list;
&&while (p != NULL) {
& & if (p-&size & ret) {
& && &ret = p-&size;
& & p = p-&next;
&&mm_unlock(mm);
&&return ret - MM_SIZE(0);
void *mm_malloc(MM *mm, size_t size) {
&&void *ret;
&&if (!mm_lock(mm)) {
& & return NULL;
&&ret = mm_malloc_nolock(mm,size);
&&mm_unlock(mm);
&&return ret;
void mm_free(MM *mm, void *x) {
&&mm_lock(mm);
&&mm_free_nolock(mm, x);
&&mm_unlock(mm);
MM *mm_create(size_t size) {
&&if (size == 0) {
& & size = 32 * 1024 * 1024;
&&p = mm_create_shm(size);
&&if (p == (MM *)-1) {
& & return NULL;
&&mm_init(p);
&&if (!mm_init_lock(p-&lock)) {
& & mm_destroy_shm(p);
& & return NULL;
&&return p;
void mm_destroy(MM *mm) {
&&if (mm != NULL) {
& & mm_destroy_lock(mm-&lock);
& & mm_destroy_shm(mm);
size_t mm_size(MM *mm) {
&&if (mm != NULL) {
& & return mm-&size;
&&return 0;
size_t mm_sizeof(MM *mm, void *x) {
&&mm_mem_head *p;
&&size_t ret;
&&if (mm == NULL || x == NULL || !mm_lock(mm)) {
& & return 0;
&&p = PTR_TO_HEAD(x);
&&ret = p-&size;
&&mm_unlock(mm);
&&return ret;
size_t mm_available(MM *mm) {
&&size_t available;
&&if (mm != NULL && mm_lock(mm)) {
& & available = mm-&available;
& & mm_unlock(mm);
& & return available;
&&return 0;
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
空间积分0 信誉积分134 UID阅读权限20积分365帖子精华可用积分365 专家积分0 在线时间54 小时注册时间最后登录
稍有积蓄, 积分 365, 距离下一级还需 135 积分
帖子主题精华可用积分365 专家积分0 在线时间54 小时注册时间最后登录
论坛徽章:0
好东西 先收藏 慢慢看
空间积分805 信誉积分203 UID阅读权限50积分2185帖子精华可用积分2185 专家积分75 在线时间1111 小时注册时间最后登录
小富即安, 积分 2185, 距离下一级还需 2815 积分
帖子主题精华可用积分2185 专家积分75 在线时间1111 小时注册时间最后登录
论坛徽章:0
牛啊,支持
虽千万人吾往矣……
修炼python中……
nnd,要失业了……
空间积分0 信誉积分288 UID阅读权限70积分7638帖子精华可用积分7638 专家积分5 在线时间217 小时注册时间最后登录
富足长乐, 积分 7638, 距离下一级还需 362 积分
帖子主题精华可用积分7638 专家积分5 在线时间217 小时注册时间最后登录
论坛徽章:0
我重来不在意别人的看法,只是我知道我自己有更重要的事情要去做。他们只是在浪费自己的生命
空间积分0 信誉积分548 UID329038阅读权限30积分1478帖子精华可用积分1478 专家积分8 在线时间346 小时注册时间最后登录
家境小康, 积分 1478, 距离下一级还需 522 积分
帖子主题精华可用积分1478 专家积分8 在线时间346 小时注册时间最后登录
论坛徽章:3
提一个小小小的意见,
最好能把单向链表的操作封装起来。(我对数据结构理解能力很差,看别人代码的时候,总会都要想想这样访问会不会出问题)
空间积分0 信誉积分340 UID9418874阅读权限100积分25208帖子精华可用积分25208 专家积分439 在线时间13570 小时注册时间最后登录
帖子主题精华可用积分25208 专家积分439 在线时间13570 小时注册时间最后登录
论坛徽章:0
不错,有时间研究下。
欢迎访问学习虫社区--学习知识,分享知识!
空间积分0 信誉积分116 UID阅读权限100积分2496帖子精华可用积分2496 专家积分5 在线时间377 小时注册时间最后登录
帖子主题精华可用积分2496 专家积分5 在线时间377 小时注册时间最后登录
论坛徽章:0
原帖由 ilex 于
10:03 发表
提一个小小小的意见,
最好能把单向链表的操作封装起来。(我对数据结构理解能力很差,看别人代码的时候,总会都要想想这样访问会不会出问题)
alloc/free 这一段代码都是剪自 eAccelerator, 不过我每行每句都读通了, 确认放心了呵. 我有和你类似的问题, 不光数据结构这块, 每次用现成的库函数总是产生一些类似的焦虑.
这个链表设计得还是不错的, 把可用空间的片段的头部直接存储链表结构..
空间积分0 信誉积分82 UID749629阅读权限30积分1214帖子精华可用积分1214 专家积分0 在线时间587 小时注册时间最后登录
家境小康, 积分 1214, 距离下一级还需 786 积分
帖子主题精华可用积分1214 专家积分0 在线时间587 小时注册时间最后登录
论坛徽章:0
这个要支持,好好学习下~~
BTChina VeryCD = 变态中国 非常操蛋
空间积分0 信誉积分6 UID167894阅读权限10积分19帖子精华可用积分19 专家积分0 在线时间63 小时注册时间最后登录
白手起家, 积分 19, 距离下一级还需 181 积分
帖子主题精华可用积分19 专家积分0 在线时间63 小时注册时间最后登录
论坛徽章:0
有使用示例吗?最好给个使用示例
空间积分0 信誉积分34 UID阅读权限10积分10帖子精华可用积分10 专家积分0 在线时间109 小时注册时间最后登录
白手起家, 积分 10, 距离下一级还需 190 积分
帖子主题精华可用积分10 专家积分0 在线时间109 小时注册时间最后登录
论坛徽章:0
北京皓辰网域网络信息技术有限公司. 版权所有 京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:
广播电视节目制作经营许可证(京) 字第1234号
中国互联网协会会员&&联系我们:
感谢所有关心和支持过ChinaUnix的朋友们
转载本站内容请注明原作者名及出处}

我要回帖

更多关于 共享内存容量 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信