Parallel injects

Michael A. Toth lirul.lists at gmail.com
Mon Mar 17 17:00:22 UTC 2008


Hi there,

(Sorry for my bad English.) I built a testing environment for
mogilefs, I created a master-slave replicated MySQL-5 databases, two
trackers, four hosts (mogstored) and four devices too, and mogilefs
compiled from svn r1156. I would like to test parallel file injects,
so i wrote a very simple shell script.

#!/bin/bash

n=0

while [ 1 ]; do

  k=$(ps aux | grep '/usr/bin/mogtool'|wc -l)

  [ $k -ge 5 ] && continue

  for j in `seq 1 $((5 - $k))`; do
    n=$((n + 1))
    mogtool inject /testfile.txt test-$n.txt >/dev/null 2>&1 &
  done

done

This executes always min. five inject processes. When I run this
script, and watch process list, approximately 30-35 seconds I see 3 or
4 zombie mogtool processes; and the other procs will never stops. I
checked these procs via strace, and I saw:

7096  --- SIGCHLD (Child exited) @ 0 (0) ---
7096  select(0, NULL, NULL, NULL, {0, 21000}) = 0 (Timeout)
7096  waitpid(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], WNOHANG) = 29678
7096  send(4, "get_paths
domain=testdomain&noverify=1&key=test-16.txt\r\n", 58, MSG_NOSIGNAL) =
58
7096  select(8, [4], NULL, NULL, {3, 0}) = 1 (in [4], left {2, 997000})
7096  read(4, "ERR unknown_key unknown_key\r\n", 4096) = 29
7096  write(1, "Error: reaped child 29678 for chunk 1 but no paths
exist... Retrying...\n", 72) = 72
7096  clone(child_stack=0,
flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD,
child_tidptr=0xb7d87928) = 29685
7096  write(1, "Spawned child 29685 to deal with chunk number 1.\n", 49) = 49
7096  waitpid(-1, 0xbfe23d58, WNOHANG)  = 0
7096  select(0, NULL, NULL, NULL, {0, 100000} <unfinished ...>

(this happens to again for ever, or until I kill)

The machines are Ubuntu Dapper i386 with own kernel-2.6.23, all
depends of mogilefs Perl modules built from cpan, and I prefer Perlbal
for trackers.

Have you got any idea? Please let me if you need more describe.

Regards,
Michael A. Toth


More information about the mogilefs mailing list