-----Original Message----- From: Nalli, Sanketh Sent: Monday, June 02, 2014 11:54 AM To: Richard Weinberger Cc: user-mode-linux-user@lists.sourceforge.net Subject: Re: [uml-user] invalid /proc/PID/exe in UML processes
And that symlink is crucial to the workload I am trying to run !!!!! -----Original Message----- From: Nalli, Sanketh Sent: Monday, June 02, 2014 11:53 AM To: 'Richard Weinberger' Cc: enjoy mindful; user-mode-linux-user@lists.sourceforge.net Subject: RE: [uml-user] invalid /proc/PID/exe in UML processes >>And why does the /proc/PID/exe NOT point to anything in >> >> The host ? (PID is the pid of a dummy program running in UML) >Host PID != Guest PID Yes I know that. That’s not what I meant. What I am trying to say is this : 1. When you run a program in side UML it shows up on HOST as "linux" in the ps -e listing 2. the "exe" symlink of that "linux" process in the /proc of the HOST Is EMPTY !!! -----Original Message----- From: Richard Weinberger [mailto:richard.weinber...@gmail.com] Sent: Monday, June 02, 2014 11:41 AM To: Nalli, Sanketh Cc: enjoy mindful; user-mode-linux-user@lists.sourceforge.net Subject: Re: [uml-user] invalid /proc/PID/exe in UML processes On Mon, Jun 2, 2014 at 7:55 PM, Nalli, Sanketh <sanketh.na...@hp.com> wrote: > Thanks a lot. > > Do you know why my /proc is empty in the guest Did you mount procfs? > > > From: enjoy mindful [mailto:enjoymind...@gmail.com] > Sent: Friday, May 30, 2014 12:06 AM > To: Nalli, Sanketh > Cc: user-mode-linux-user@lists.sourceforge.net > Subject: Re: [uml-user] invalid /proc/PID/exe in UML processes > > > > let me answer your second question. > > I did this analysis with kernel linux-3.12.6: > > 1) make ARCH=um cscope > 2) search functions which called 'clone' > File Function Line > 0 ubd_user.c start_io_thread 43 pid = clone(io_thread, (void *) sp, > CLONE_FILES | > CLONE_VM, NULL); > 1 helper.c start_io_thread 74 pid = clone(helper_child, (void *) sp, > CLONE_VM, &data); > 2 helper.c start_io_thread 124 pid = clone(proc, (void *) sp, flags, > arg); > 3 process.c start_userspace 300 pid = clone(userspace_tramp, (void > *) sp, flags, (void *) > stub_stack); > 4 lguest.c create_thread 1048 vq->thread = clone(do_thread, stack + > 32768, CLONE_VM | > SIGCHLD, vq); > > 3) insert some printk statement in those function > 4) build and run, then watch the booting process output > [root@localhost ~]# dmesg | grep 6436 > [ 0.190000] run_helper_thread : clone success, pid = 6436 > [root@localhost ~]# dmesg | grep 6437 > [ 0.190000] start_io_thread - clone success : pid = 6437 > [root@localhost ~]# dmesg | grep 6438 > [ 0.190000] run_helper_thread : clone success, pid = 6438 > > [real@real runuml]$ ps -ef | grep patch > real 6423 1553 6 16:17 pts/0 00:00:02 ./linux_patched > ubda=./Fedora20-x86-root_fs mem=256m > real 6436 6423 0 16:17 pts/0 00:00:00 ./linux_patched > ubda=./Fedora20-x86-root_fs mem=256m > real 6437 6423 0 16:17 pts/0 00:00:00 ./linux_patched > ubda=./Fedora20-x86-root_fs mem=256m > real 6438 6423 0 16:17 pts/0 00:00:00 ./linux_patched > ubda=./Fedora20-x86-root_fs mem=256m > real 6439 6423 0 16:17 pts/0 00:00:00 [linux_patched] > real 6459 6423 0 16:17 pts/0 00:00:00 [linux_patched] > real 6479 6423 0 16:17 pts/0 00:00:00 [linux_patched] > real 6492 6423 0 16:17 pts/0 00:00:00 [linux_patched] > real 6565 6423 0 16:17 pts/0 00:00:00 [linux_patched] > real 6567 6423 0 16:17 pts/0 00:00:00 [linux_patched] > real 6572 6423 0 16:17 pts/0 00:00:00 [linux_patched] > real 6573 6423 0 16:17 pts/0 00:00:00 [linux_patched] > real 6576 6423 0 16:17 pts/0 00:00:00 [linux_patched] > real 6605 6423 0 16:17 pts/0 00:00:00 [linux_patched] > real 6619 6423 0 16:17 pts/0 00:00:00 [linux_patched] > real 6621 6423 0 16:17 pts/0 00:00:00 [linux_patched] > real 6707 6423 0 16:17 pts/0 00:00:00 [linux_patched] > real 6715 6423 0 16:17 pts/0 00:00:00 [linux_patched] > real 6765 6423 0 16:18 pts/0 00:00:00 [linux_patched] > > [root@localhost ~]# dmesg | grep proc > [ 0.090000] run_helper_thread : clone success, pid = 8387, proc=0806471d > [ 0.100000] run_helper_thread : clone success, pid = 8389, proc=080663a3 > > [real@real linux-3.12.6]$ grep 0806471d System.map 0806471d t > aio_thread [real@real linux-3.12.6]$ grep 080663a3 System.map > 080663a3 t write_sigio_thread > > so, the four processes are: > 1) uml kernel main thread > 2) aio_thread > 3) io_thread > 4) write_sigio_thread > > > > On Fri, May 30, 2014 at 9:22 AM, Nalli, Sanketh <sanketh.na...@hp.com> > wrote: > > Hi, > > So I start UML with the cmdline > > ./linux rootfstype=hostfs rw mem=1G init=/bin/bash > > > > When the bash shell comes up, I run my prog : ./my_prog > > > > 6173 pts/8 00:00:00 linux > > 6180 pts/8 00:00:00 linux > > 6181 pts/8 00:00:00 linux > > 6182 pts/8 00:00:00 linux > > 6183 pts/8 00:00:00 linux > > 6188 pts/8 00:00:13 linux > > > > > > The last item in the list with PID is 6188 is my program. > > I can tell because my_prog increments a counter in an infinite loop > > And consumes CPU cycles. It shows up on “top” as the dominant process. > > > > My question: > > 1. /proc/6188/exe is invalid. Why ?? > > I mean, it doesn’t point to anything. > > Shouldn’t it point to my_prog or something ? > > > > 2. What do the 4 UML processes 6173, 6180, 6181, 6182 do ? (6183 is > /bin/bash whos “exe” symlink is also doesn’t point to anything !!) > > 3. When a UML process, say my_prog (PID 6188) makes a system call, > where is the system call executed – is it within the addr space of > 6173 (the UML kernel process) or 6188 (my_prog running in UML ??) > > > > -Sanketh > > > > > > > ---------------------------------------------------------------------- > -------- Time is money. Stop wasting it! Get your web API in 5 > minutes. > www.restlet.com/download > http://p.sf.net/sfu/restlet > _______________________________________________ > User-mode-linux-user mailing list > User-mode-linux-user@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/user-mode-linux-user > > > > > ---------------------------------------------------------------------- > -------- Learn Graph Databases - Download FREE O'Reilly Book "Graph > Databases" is the definitive new guide to graph databases and their > applications. Written by three acclaimed leaders in the field, this > first edition is now available. Download your free book today! > http://p.sf.net/sfu/NeoTech > _______________________________________________ > User-mode-linux-user mailing list > User-mode-linux-user@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/user-mode-linux-user > -- Thanks, //richard ------------------------------------------------------------------------------ Learn Graph Databases - Download FREE O'Reilly Book "Graph Databases" is the definitive new guide to graph databases and their applications. Written by three acclaimed leaders in the field, this first edition is now available. Download your free book today! http://p.sf.net/sfu/NeoTech _______________________________________________ User-mode-linux-user mailing list User-mode-linux-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/user-mode-linux-user ------------------------------------------------------------------------------ Learn Graph Databases - Download FREE O'Reilly Book "Graph Databases" is the definitive new guide to graph databases and their applications. Written by three acclaimed leaders in the field, this first edition is now available. Download your free book today! http://p.sf.net/sfu/NeoTech _______________________________________________ User-mode-linux-user mailing list User-mode-linux-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/user-mode-linux-user