php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #25325 command from exec do not migrate in an openMosix cluster
Submitted: 2003-08-30 16:05 UTC Modified: 2003-08-30 21:54 UTC
From: carb at videotron dot ca Assigned:
Status: Closed Package: Filesystem function related
PHP Version: 4.3.3 OS: RedHat 9.0
Private report: No CVE-ID: None
View Add Comment Developer Edit
Welcome! If you don't have a Git account, you can't do anything here.
You can add a comment by following this link or if you reported this bug, you can edit this bug over here.
(description)
Block user comment
Status: Assign to:
Package:
Bug Type:
Summary:
From: carb at videotron dot ca
New email:
PHP Version: OS:

 

 [2003-08-30 16:05 UTC] carb at videotron dot ca
Description:
------------
executing a command from PHP, the command does not get migrated in an openMosix cluster, even if the command migrates when it is executed from the command line.

Running "awk 'BEGIN {for(i=0;i<10000;i++)for(j=0;j<10000;j++);}' > /dev/null 2>&1 &" from a command line several times creates processes that get migrated.  

Running the same thing several times from an exec in a PHP script does not get migrated.  

The same problem occurs whether the script is executed from apache "http://localhost/test.php/" or the command line "php test.php"

Reproduce code:
---------------
<?PHP
  exec("awk 'BEGIN {for(i=0;i<10000;i++)for(j=0;j<10000;j++);}' > /dev/null 2>&1 &");

?>

Expected result:
----------------
When executing the script several times in an openMosix cluster, some of the processes should migrate.

Actual result:
--------------
When executing the script several times in an openMosix cluster, none of the processes migrate.

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2003-08-30 16:12 UTC] derick@php.net
Why do you think this is related to PHP? PHP does *nothing* special with processes... I wonder how this can be related to OpenMosix.
 [2003-08-30 16:51 UTC] carb at videotron dot ca
I think it is related to PHP because that exact command get migrated correctly when executed from the command line, but does not when it is executed from PHP/exec().  

When starting the process from the command line, the process sizes are:
SIZE:128, RSS:128, SHARE:40  and it migrates.

When starting the process from PHP/Apache, the process sizes are:
SIZE:736, RSS:732, SHARE:652  and it does NOT migrate.

When starting the process from PHP at the command line, the process sizes are:
SIZE:740, RSS:732, SHARE:652  and it does NOT migrate.

So we can see that there is alot of extra stuff comming from PHP that is in the process and it would be this that is affecting the migration.

openMosix cannot migrate processes that have shared memory, there may be something like that coming from comming from PHP.

I also posted a message to the openMosix group in case they can help. 

https://sourceforge.net/tracker/index.php?func=detail&aid=797919&group_id=46729&atid=447171

Thanks in advance,
Real
 [2003-08-30 17:59 UTC] sniper@php.net
I don't know openMosix at all (first heard about it now :),
but I read this:

  http://howto.ipng.be/openMosix-HOWTO/x1225.html

That first column, about "/proc/$pid/, there often is a cantmove file..", have you checked that?

Also you should know that we don't fork() with exec() function. (proc_open() does, maybe you should use that instead?)

 [2003-08-30 18:35 UTC] carb at videotron dot ca
Hi, Thank you for your responses.  I fully understand that you do not work with openMosix.  

Yes, there is a cantmove file, but it is empty, meaning that 

But is an important issue for anyone who plans to develop a PHP website that can start processes on an openMosix or any other SSI type cluster.  Since any process that will come fomr php will never migrate, php could not be used as a front end.

So it would be fun to try to solve this and I am certain that the openMosix side will also help look at it.

The root of the problem is probably related to the additional stuff being added to the process when it comes from PHP.  Do you have an idea what this additional (approx.) 600K is?

Yes, the cantmove file is present for all the processes but unfortunately there are no error messages in it for the processes that don't migrate.

I will experiment with popen to see if I get different results.

Thanks in advance,
Real
 [2003-08-30 21:54 UTC] carb at videotron dot ca
Running the command with "mosrun -l" removes the lock so that it can migrate.

<?PHP
  exec("mosrun -l awk 'BEGIN {for(i=0;i<10000;i++)for(j=0;j<10000;j++);}' >
/dev/null 2>&1 &");

?>
 
PHP Copyright © 2001-2022 The PHP Group
All rights reserved.
Last updated: Thu Dec 08 06:05:52 2022 UTC