SystemV IPC. Segment info

Vagner vagner at bsdway.ru
Tue Apr 30 21:49:46 UTC 2013


On 16:44 Tue 30 Apr , Jilles Tjoelker wrote:
> On Tue, Apr 30, 2013 at 07:49:40AM +0400, Vagner wrote:
> > Tell me please, may I send this to PR, or this changes is not valid?
> 
> > > A few weeks ago, I ran into problem, which related to SystemV IPC.
> > > More than 20 processes attached to a segment shared queue.
> > > Process-initiator for create segment was killed, as process which
> > > was accessed to segment last. Segment didn't free memory, but tagged
> > > it as SHMSEG_REMOVED as the result. This is a reason of memory
> > > overflow (memory assotiated as shm). Moreover, processes, which was
> > > attached to this segment did't get a new data. I have one resolve. I
> > > need to restarted all process, which still attached to segment. But
> > > this reason have a problem. We haven't list of this processes at
> > > system. Moreover, struct shmid_ds, which described segment, haven't
> > > this info too.
> 
> > > This patch is a resolve of problem. It: 
> > > - added a linked list of structures shmid_pi in struct shmid_ds. PID
> > > (and last access time) recorded to this struct consistently. Memory
> > > allocates with ident 'shminfo' for this list of struct shmid_pi.
> > > - added syscall shminf for get all elements from list shmid_ds.
> > > - added option [-P] in ipcs(1) for system call shminf.
> 
> I think it is strange to maintain pids in the VM system. This makes the
> VM system more complex for little reason (because the information is
> only needed for monitoring, not normal operation).
> 

Yes, it, may be, not nice solution, but I don't found there I can see address
of segment (from user space). If you know where can see, tell me please.

> Perhaps it is possible to do what you want using procstat -v or a slight
> extension to it.
> 

procstat(1) can show for me only proc->ki_vmspace struct, but there not
contain info about mapping shared serments.

> Alternatively, you may find a different way to get rid of your stale
> worker processes. For example, before invoking shmctl(IPC_RMID), set a
> flag inside the memory segment that all workers should exit and activate
> whatever mechanism you use for telling the workers that they need to do
> something.

This solution requires action from workers, but I think many developers
will not want to rewrite their soft...

> 
> -- 
> Jilles Tjoelker
> _______________________________________________
> freebsd-hackers at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
> To unsubscribe, send any mail to "freebsd-hackers-unsubscribe at freebsd.org"


of segment (from user space). If you know where can see, tell me please.
\

-- 
Respectfully,
Stanislav Putrya
System administrator
FotoStrana.Ru Ltd.
ICQ IM: 328585847
Jabber-GoogleTalk: root.vagner
mob.phone SPB: +79215788755
mob.phone RND: +79525600664
email: vagner at bsdway.ru
email: putrya at playform.ru
email: root.vagner at gmail.com
site: bsdway.ru
site: fotostrana.ru

----------------------------------------
 ( ) ASCII ribbon campaign
  X  - against HTML, vCards and
 / \ - proprietary attachments in e-mail


More information about the freebsd-hackers mailing list