Using the Clone() System Call
Joey Bernard is a self-described uber-geek. He has one degree in physics and is working on a second degree in computer science. He hopes to become a fully ordained priest of the Church of Tux. All donations will be accepted.
email: ljeditors@ssc.com
Joey Bernard has a background in both physics and computer science. This serves him well in his day job as a computational research consultant at the University of New Brunswick. He also teaches computational physics and parallel programming.
Realizing the promise of Apache® Hadoop® requires the effective deployment of compute, memory, storage and networking to achieve optimal results. With its flexibility and multitude of options, it is easy to over or under provision the server infrastructure, resulting in poor performance and high TCO. Join us for an in depth, technical discussion with industry experts from leading Hadoop and server companies who will provide insights into the key considerations for designing and deploying an optimal Hadoop cluster.
Sponsored by AMD
If you already use virtualized infrastructure, you are well on your way to leveraging the power of the cloud. Virtualization offers the promise of limitless resources, but how do you manage that scalability when your DevOps team doesn’t scale? In today’s hypercompetitive markets, fast results can make a difference between leading the pack vs. obsolescence. Organizations need more benefits from cloud computing than just raw resources. They need agility, flexibility, convenience, ROI, and control.
Stackato private Platform-as-a-Service technology from ActiveState extends your private cloud infrastructure by creating a private PaaS to provide on-demand availability, flexibility, control, and ultimately, faster time-to-market for your enterprise.
Sponsored by ActiveState
Free Webinar: Hadoop
How to Build an Optimal Hadoop Cluster to Store and Maintain Unlimited Amounts of Data Using Microservers
Realizing the promise of Apache® Hadoop® requires the effective deployment of compute, memory, storage and networking to achieve optimal results. With its flexibility and multitude of options, it is easy to over or under provision the server infrastructure, resulting in poor performance and high TCO. Join us for an in depth, technical discussion with industry experts from leading Hadoop and server companies who will provide insights into the key considerations for designing and deploying an optimal Hadoop cluster.
Some of key questions to be discussed are:
- What is the “typical” Hadoop cluster and what should be installed on the different machine types?
- Why should you consider the typical workload patterns when making your hardware decisions?
- Are all microservers created equal for Hadoop deployments?
- How do I plan for expansion if I require more compute, memory, storage or networking?
| Speed Up Your Web Site with Varnish | Jun 19, 2013 |
| Non-Linux FOSS: libnotify, OS X Style | Jun 18, 2013 |
| Containers—Not Virtual Machines—Are the Future Cloud | Jun 17, 2013 |
| Lock-Free Multi-Producer Multi-Consumer Queue on Ring Buffer | Jun 12, 2013 |
| Weechat, Irssi's Little Brother | Jun 11, 2013 |
| One Tail Just Isn't Enough | Jun 07, 2013 |
- Speed Up Your Web Site with Varnish
- Containers—Not Virtual Machines—Are the Future Cloud
- Lock-Free Multi-Producer Multi-Consumer Queue on Ring Buffer
- Non-Linux FOSS: libnotify, OS X Style
- Linux Systems Administrator
- Senior Perl Developer
- Technical Support Rep
- UX Designer
- Android's Limits
- Web & UI Developer (JavaScript & j Query)
- Reply to comment | Linux Journal
26 min 59 sec ago - Yeah, user namespaces are
1 hour 43 min ago - Cari Uang
5 hours 14 min ago - user namespaces
8 hours 8 min ago - yea
8 hours 33 min ago - One advantage with VMs
11 hours 2 min ago - about info
11 hours 35 min ago - info
11 hours 36 min ago - info
11 hours 37 min ago - info
11 hours 39 min ago



Comments
nice article
Good read .
I think when we use clone()
I think when we use clone() , it is a wrapper in C-library. Then after calling this wrapper , it in turn calls the actual clone(2) system call. If this is true then you have to mention it properly.
Looking for ur future & early updations, I remain.
Jayashree K J.
Bangalore ( NTPL ).
31st May, 2006.
How can Joey Bernard will be
How can Joey Bernard will be able to become a fully ordained priest of the Church of Tux, because his current profession is as a computer scientist ???????
How can Joey Bernard will be
How can Joey Bernard will be able to become a fully ordained priest of the Church of Tux, because his current profession is as a computer scientist ???????
Re: Using the Clone() System Call
WOW! i have been looking for manual for clone for weeeks!!! its been driving me up the wall!!!!!!!!!!!!!!!!!!! thankyou so much!!!
Leon
great article.
truely a good article.
Herr Fähnders, hier ist doch
Herr Fähnders, hier ist doch alles auf Englisch! :(((((
Hier ist die Uebersetzung:
Hier ist die Uebersetzung:
http://babelfish.altavista.com/babelfish/trurl_pagecontent?url=http%3A%2...
Viel Spass beim Lesen
Re: Using the Clone() System Call
I've come back from the proverbial grave. While googling myself, I came across this verrry old article I had written. With more experience under my belt, I realize I was very stupid in parts of this article. I will be posting a link to an updated version here in the next few weeks if anyone who finds this article wants a corrected version.
Re: Using the Clone() System Call
Please do post an updated version. I found this article very helpful.
Re: Using the Clone() System Call
Hi
Kindly send me updated link
Please do the necessary changes u r mentioning
also can u mention some link i could use for clone()
I am a university student
Thanks
Vipul
u03138@cs.unipune.ernet.in
Re: Using the Clone() System Call
I was wondering why in the source code (listing 2) do you use a void **, when void * could very well be used for the child stack pointer
Rohit
Hey, the stack grows downwards!
Hi,
I'm Pablo, a humble reader from Argentina.
I found your article very interesting, however I couldn't run the code from figure 2. I did compiled it, but the execution of the clone call, lead to a segmentation fault.
I took a look at the clone's man page and it said that the you should pass a pointer to the stack pointer of the task, not the beginning of the stack.
So, as the stack decreases, and it's empty when the thread begins, the right address would not be child_stack, but child_stack + 65383.
Only that way the code runs fine.
Hope it helps.
Regarding child_stack of clone
How you are calculating as 65383.
How much should we need to allocate for malloc.
how to calculate malloc size.
Re: Hey, the stack grows downwards!
Well, it worked for me. I overlooked the -static option to cc the first time and got a segmentation fault.
Re: Hey, the stack grows downwards!
Using:
child_stack + 65383
still segments for me. Where does 65383
come in? 4 * 16384 -> 65536 anyhow!
child_stack + 4000
works for me i.e. address is a definitely safe
one to use.
David (djjohn@essex.ac.uk)
Re: Hey, the stack grows downwards!
You should write instead:
#define CHILD_STACK_SIZE 16384
clone( child_process, child_stack + CHILD_STACK_SIZE / sizeof( void ** ), CLONE_VM | CLONE_FILES, NULL );
Which is equivalent to CHILD_STACK_SIZE / 4 on most systems.
Re: Hey, the stack grows downwards!
Hi I am manjeet,
even I faced the same problem (of segmentation fault) but
couldnt get out of it even after changing the child_stack pointer ...
Re: Using the Clone() System Call
I am Chupacabra! Fear my use of the Clone() System Call!
CNN.com