From Mexico.purplecow.org
(Difference between revisions)
(inprogress) |
(doneski) |
||
Line 1: | Line 1: | ||
= System call breakdown for ruby's "gem" command = | = System call breakdown for ruby's "gem" command = | ||
+ | == Overview == | ||
Called with no parameters - the sole actual work is to print usage information. It takes a long time, so let's have a look at what happens: | Called with no parameters - the sole actual work is to print usage information. It takes a long time, so let's have a look at what happens: | ||
+ | == A quick truss == | ||
<pre> | <pre> | ||
$ truss gem >rubygem.truss 2>&1 | $ truss gem >rubygem.truss 2>&1 | ||
Line 13: | Line 15: | ||
</pre> | </pre> | ||
- | + | == Breakdown == | |
+ | Oh dear! So what is it actually doing? | ||
+ | * brk: 701 | ||
+ | * close: 553 | ||
+ | * stat: 1371 | ||
+ | * llseek: 535 | ||
+ | * read: 889 | ||
+ | * open: 656 | ||
+ | * write: 22 (That's actually printing the usage information) | ||
+ | * other: 234 (mainly mmap) | ||
+ | == A graph == | ||
[[image:rubygempie.png]] | [[image:rubygempie.png]] | ||
[[Category: Tech]] | [[Category: Tech]] |
Revision as of 23:18, 12 October 2010
System call breakdown for ruby's "gem" command
Overview
Called with no parameters - the sole actual work is to print usage information. It takes a long time, so let's have a look at what happens:
A quick truss
$ truss gem >rubygem.truss 2>&1 $ grep -c open rubygem.truss 656 $ grep -c stat rubygem.truss 1372 $ wc -l rubygem.truss 4836 rubygem.truss
Breakdown
Oh dear! So what is it actually doing?
- brk: 701
- close: 553
- stat: 1371
- llseek: 535
- read: 889
- open: 656
- write: 22 (That's actually printing the usage information)
- other: 234 (mainly mmap)