delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2006/02/19/19:53:42

X-Spam-Check-By: sourceware.org
Message-Id: <200602200053.k1K0rBVH014028@tigris.pounder.sol.net>
From: cygwin AT trodman DOT com (Tom Rodman)
To: cygwin AT cygwin DOT com
Subject: (OT?) stress test 2tickle fork error;to exhaust heap..
Date: Sun, 19 Feb 2006 18:53:09 -0600
X-IsSubscribed: yes
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com

[Informal post. I'm not a developer. Is this a fair test, does it have any value?]

We have a test box (Windows Server 2003 Enterprise Edition), w/10GB RAM (PAE enabled).
Trying to stress the limits of cygwin 1.5.19 or the OS, I ran this test
from a bash session:

  # preliminary step: load private key, so "ssh localhost date" works w/o password
    eval $(ssh-agent); ssh-add ~/.ssh/id_rsa 

  # ******************************************************************** 
  # the stress test:
  #   (able to go to 80 ssh sessions; suggest you try just 15 or so 1st)
  # ******************************************************************** 

    for ((i=1;$i <=15;i += 1))
    do echo $i:
      ssh localhost /bin/sleep 600 >/dev/null 2>&1 &
      sleep 3
    done

    man bash
     # tap "G", to go to end, then quit, repeat this 3 more times

  # -------------------------------------------------------------------- 
  # to kill all ssh sessions and sleeps:
  # -------------------------------------------------------------------- 
   # note that "|" below is a "regexp 'or'":
     pgrep -f 'ssh localhost /bin/sleep 600|/bin/sleep 600' # just a listing
     pkill -SIGKILL -f 'ssh localhost /bin/sleep 600|/bin/sleep 600'

Results:

  If I eliminate the "sleep 3", problems start after 15 or so parallel ssh sessions - 
  some of the new ssh jobs die immediately.  Later if I run "man bash" 4 times
  in a row, in the bash session that ran the "for loop", I get fork errors at least once.

  By adding the "sleep 3", I do not get the fork errors - any idea
  why? I was able to get 80 sessions at once (task manager shown ~300
  processes), "jobs" shows 80 ssh sessions, and "man bash" ran just fine.

  In all cases, after the "man bash" the ssh sessions end up getting STOPPED, ie
  suspended, as shown by "jobs" command in bash - any way to prevent that? ( is that
  probably an OT UNIX question? )

I was able to get 80 ssh sessions, running at once, and was still able
to run "man bash" w/o any fork error. I suspect I could have gone
further. Can't remember if I did the test at the console, but I did have
an RDP session available, thinking that I could at least reboot through
terminal services if ssh became unusable.

How might I run a test to deliberately use up the 48MB heap?  I thought perhaps,
that enough multiple ssh sessions would do so.  

Here's the slightly adjusted heap setting on the server:

  bash-3.00$   ccs=/proc/registry/HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet
  bash-3.00$   key="$ccs/Control/Session Manager/SubSystems/Windows"
  bash-3.00$   perl -lne 'print $1 if m{ (Shar.*?) }' "$key"
  SharedSection=1536,3584,768

--
thanks,
Tom


--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019