Re: SystemV IPC. Segment info

2013-04-30 Thread Jilles Tjoelker
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).

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

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.

-- 
Jilles Tjoelker
___
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to freebsd-hackers-unsubscr...@freebsd.org


Re: SystemV IPC. Segment info

2013-04-30 Thread Vagner
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@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
 To unsubscribe, send any mail to freebsd-hackers-unsubscr...@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: vag...@bsdway.ru
email: put...@playform.ru
email: root.vag...@gmail.com
site: bsdway.ru
site: fotostrana.ru


 ( ) ASCII ribbon campaign
  X  - against HTML, vCards and
 / \ - proprietary attachments in e-mail
___
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to freebsd-hackers-unsubscr...@freebsd.org


Re: SystemV IPC. Segment info

2013-04-29 Thread Vagner
Tell me please, may I send this to PR, or this changes is not valid?


 Hello!
 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.
 
 Thanks.
 
 -- 
 Respectfully,
 Stanislav Putrya
 System administrator
 FotoStrana.Ru Ltd.
 ICQ IM: 328585847
 Jabber-GoogleTalk: root.vagner
 mob.phone SPB: +79215788755
 mob.phone RND: +79525600664
 email: vag...@bsdway.ru
 email: put...@playform.ru
 email: root.vag...@gmail.com
 site: bsdway.ru
 site: fotostrana.ru
 
 
  ( ) ASCII ribbon campaign
   X  - against HTML, vCards and
  / \ - proprietary attachments in e-mail
 -- next part --
 A non-text attachment was scrubbed...
 Name: shminf.patch
 Type: text/x-diff
 Size: 30460 bytes
 Desc: not available
 URL: 
 http://lists.freebsd.org/pipermail/freebsd-hackers/attachments/20130415/233bf05f/attachment-0001.patch
 
___
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to freebsd-hackers-unsubscr...@freebsd.org