For the first time, Hewlett-Packard has won top ranking in an annual study of the merits of different versions of the Unix operating system, displacing Sun Microsystems. Runner up was Sun’s Solaris 8, while IBM’s AIX followed.
For the first time, Hewlett-Packard has won top ranking in an annual study of the merits of different versions of the Unix operating system, displacing Sun Microsystems. Runner up was Sun’s Solaris 8, while IBM’s AIX followed.
Being an HP-UX Administrator, this makes me happy. HP-UX 11i is the greatest thing to come out of HP in a long time.
Regards,
Maverick
Last time I checked HP-UX didn’t even implement proper group permissions….
may be it is time to check it again
was 2 years ago, but at the time I couldn’t actually kill a process. I could conceptually kill it so that it didn’t take up any more memory, but it still occupied an entry in the process table. Lovely. Hope they fixed that one!
You got that result with ‘kill?’
“ws 2 years ago, but at the time I couldn’t actually kill a process. I could conceptually kill it so that it didn’t take up any more memory, but it still occupied an entry in the process table. Lovely. Hope they fixed that one!”
That’s called a zombie. And it is hardly an HP-UX specific problem. It hapens on HP-UX, AIX, Solaris, Linux, BSD, etc.
Zombie processes are dead (that’s why they are called zombies). They are not taking up any resources. They are nothing more than an entry in the proc table. Because they are already dead, kill has no effect on them. Not even kill -9 will get rid of them.
Zombies are the result of programming bugs in applications, but like I said, it’s a problem common to all UNIX systems. Not just HP-UX.
What exactly causes this? I mean, what deficiency in the way Unix handles process creation and destruction gives rise to zombie processes (I’ve heard the name for this phenomonen before, interestingly enough). Seems to me that this is a very serious issue since there are circumstances where you need to spawn a large number of processes and considering that the process table is finite (only 2^15 entries, right?)… well, you can see where I’m going with this.
Basically, when you kill a UNIX process, a system call is made to exit() that gets rid of everything relating to that process except for the proc table entry. So the only thing left is a PID number and the exit status of the process. These are kept around so that the parent that spawned the process can obtain information on the exit status of its child. The PID number will not actually be removed until the parent has made a system call to wait().
Zombie processes that never go away occur when the system call to wait() never gets made. There are any number of reasons why wait() might never get called, including the possibility that the parent doesn’t realize that the child has been killed.
kill has no effect on the zombie because there really is no process, so there is nothing for kill to actually do. The only way to kill to get rid of the zombie is to kill its parent process. Of course, if the parent process happens to be init, that means the only way to get rid of the zombie is to kill init. And the only way to kill init is to reboot the system.
As far as it being a serious issue, it’s usually not because normally you don’t get zombies that hang around for more than a few seconds at most. Zombies that don’t get removed only occur when something abnormal happens so the normal system call to wait() never gets made. Of course, if you get several hundred zombies, then you could have problems. But if you get that many zombies, then whatever program is causing them has a serious bug in it. One or two zombies on your system aren’t going to have any negative effects.
When a child proccess exits but the parent proccess doesnt wait for the child to exit. Most decent unix’s will reap the zombie processes once in a while – they’re not perminant.
‘Zombie process’ is kind of obsolete term – it doesn’t exist on modern Unix systems. Usually it means that process quit but didn’t cleanup after itself. It was in old days before ‘threads’ were invented.
kill -9 should remove the dead processes from proc table.
SIGKILL is the only signal that is NOT sent to process itself.
The problem with unkillable processes is that if the process is holding a lock to a resource then killing it is a very bad idea. And good Unix kernel shouldn’t allow you to kill it. Not so good kernels panic. Linux, AFAIK, would say ‘oops’ .
Of course, good kernel should manage resources better to avoid unkillable processes.
And good applications should not send their threads to kernel space without proper system call.
HP-UX has full blown ACL subsystem if you want to use it.
What metrics did they use to grade Unix systems ?
One side is end user experience, another is sys admin problems and yet another side is developer’s one.
End user doesn’t care too much if the file system is journaled or not and sysdamin don’t really care if the system supports EBCDIC encoding.
“‘Zombie process’ is kind of obsolete term – it doesn’t exist on modern Unix systems.”
I still see them occasionally where even kill -9 can’t get rid of them.
You are right, SIGKILL is not send to the process itself. But SIGKILL does not remove the PID entry from the proc table. It just kills the process. Ultimately, the PID still hangs around for the benefit of the parent.
only in Unix would such terms as “kill” and “zombie process” be used. no wonder so many are screaming about it being unfriendly!
“only in Unix would such terms as “kill” and “zombie process” be used. no wonder so many are screaming about it bing unfriendly!”
If you really want to see something scary, read the Apache documentation about how to start and stop the server. :p
Bah! Configuring sgen on Solaris – now that takes some balls
Actually, what I was refering to what the terminology in the Apache documentation. You could almost make a horror novel out of it. :p
I’ll be honest with you – I’ve never actualy read that part of the apache docs. Apache is somthing like an “instinct” at this point ok ok ok…. how about configuring PPP on Solaris x86 with an ISA modem? Do I get a cookie
“how about configuring PPP on Solaris x86 with an ISA modem? Do I get a cookie ”
I’ve never tried it with an ISA modem. I did do it with an external modem once and I didn’t have problems. But oh well.
But I still think you are missing the point about the Apache docs. It’s not that it is hard to understand. It’s not. It’s very easy to understand. It’s just kind of mordid sounding for someone not familar with the terminology.
For example, maybe they have changed it. But it used to have phrases like:
“When you send a terminate signal to Apache, the parent will immediately attempt to kill all of its children.”
And another one:
“Make sure you send the term signal to the parent. If you kill one of the children, the parent will immediately spawn a new child. So in order to terminate the server, you must kill the parent.”
It was kind of freaky stuff. LOL
where is Solaris 9 ?
also would like to see Mac OS X in next study
(Apple just lauched its rack server, powerd by OS X
… who can imagine about this from 5 years ago? )
or is ping still lying in /etc ?
where is Solaris 9 ?
Are you referring to the ISO images available for download? Go to “Downloads”, “Operating Systems”, “Solaris 8 Binaries” and there you’ll find Solaris 9 binaries as well.
I am happy for my choices :o)
Seriously, though, both are mighty OS-es.Package and patch development is done better on HP.UX, though.