<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-26028491</id><updated>2011-07-28T05:18:31.883-07:00</updated><title type='text'>Random Encounters&amp;Thoughts</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://maierkomor.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26028491/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://maierkomor.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Thomas Maier-Komor</name><uri>http://www.blogger.com/profile/10885556724411617546</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>8</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-26028491.post-117087071270916380</id><published>2007-02-07T09:33:00.000-08:00</published><updated>2007-02-07T09:51:52.720-08:00</updated><title type='text'>over 60% performance boost for "tar xf"</title><content type='html'>"tar" is a commonly used single threaded utility for generating and extracting archives. With recent advances in filesystem implementations like e.g. Sun Solaris' ZFS, I read several time the wish that tar really should be multi-threaded to get better performance.&lt;br /&gt;&lt;br /&gt;Well, I gave it a shot and wrote a preloadable binary patch that hands of write and close requests to worker threads. Unfortunately, I don't have a ZFS with many spindles, but I wanted to know if there might be a performance boost. So I tried it on a memory based TMPFS on a 4 processor Sun Fire V440 with 16GB of RAM running Solaris. I extracted a 1GB tar file first with the patched version of tar and then in single threaded mode. Result: over 60% performance improvement for the multi-threaded version.&lt;br /&gt;&lt;br /&gt;I'd say it was worth the effort writing the patch. If you'd like to use it, too, you can get it &lt;a href="http://www.maier-komor.de/mtwrite.html"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26028491-117087071270916380?l=maierkomor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maierkomor.blogspot.com/feeds/117087071270916380/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26028491&amp;postID=117087071270916380' title='39 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26028491/posts/default/117087071270916380'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26028491/posts/default/117087071270916380'/><link rel='alternate' type='text/html' href='http://maierkomor.blogspot.com/2007/02/over-60-performance-boost-for-tar-xf.html' title='over 60% performance boost for &quot;tar xf&quot;'/><author><name>Thomas Maier-Komor</name><uri>http://www.blogger.com/profile/10885556724411617546</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>39</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26028491.post-115339521695461653</id><published>2006-07-20T03:19:00.000-07:00</published><updated>2006-07-20T04:33:37.003-07:00</updated><title type='text'>Scalability prediction with sysstat</title><content type='html'>"How many users can run their applications on this machine?"&lt;br /&gt;&lt;br /&gt;This kind of question comes up often, but determining a precise value is hard. A key metric for getting this number is the amount of memory needed by every user. Unfortunately it's difficult to find out how much memory this is, because certain pages (e.g. code, read-only data) are shared among different processes on Solaris, which is of course a Good Thing TM.&lt;br /&gt;&lt;br /&gt;In most cases the highest impact on exclusively used memory have stack and heap. So if you are curious how much heap and stack your users are using, try sysstat. You can get it &lt;a href="http://www.maier-komor.de/sysstat.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I'd be happy to hear from you, if you simply like sysstat, want to report a bug, or have a proposal for an enhancement.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26028491-115339521695461653?l=maierkomor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maierkomor.blogspot.com/feeds/115339521695461653/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26028491&amp;postID=115339521695461653' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26028491/posts/default/115339521695461653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26028491/posts/default/115339521695461653'/><link rel='alternate' type='text/html' href='http://maierkomor.blogspot.com/2006/07/scalability-prediction-with-sysstat.html' title='Scalability prediction with sysstat'/><author><name>Thomas Maier-Komor</name><uri>http://www.blogger.com/profile/10885556724411617546</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26028491.post-114735878785230630</id><published>2006-05-11T07:37:00.000-07:00</published><updated>2006-05-11T07:46:27.860-07:00</updated><title type='text'>The network is the system...</title><content type='html'>...er - the computer, says Sun.&lt;br /&gt;&lt;br /&gt;Well, I think so, too. So I gave my sysstat utility a major overhaul and added multicast support. Now one can monitor several machines on the network from a single terminal or as soon marketing might say, the whole computer - really convenient!&lt;br /&gt;&lt;br /&gt;Just start sysstat with option -d on all machines, you want to monitor. Then start it without an option. Then all hosts were a sysstat were started will pop up - even the ones were a colleage started it (with or without option -d).&lt;br /&gt;&lt;br /&gt;Get it &lt;a href="http://www.maier-komor.de/sysstat.html"&gt;here.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26028491-114735878785230630?l=maierkomor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maierkomor.blogspot.com/feeds/114735878785230630/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26028491&amp;postID=114735878785230630' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26028491/posts/default/114735878785230630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26028491/posts/default/114735878785230630'/><link rel='alternate' type='text/html' href='http://maierkomor.blogspot.com/2006/05/network-is-system.html' title='The network is the system...'/><author><name>Thomas Maier-Komor</name><uri>http://www.blogger.com/profile/10885556724411617546</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26028491.post-114707449121602824</id><published>2006-05-08T00:34:00.000-07:00</published><updated>2006-05-08T00:48:11.226-07:00</updated><title type='text'>What drills, scales, and OSs have in common...</title><content type='html'>In the past week I had an interesting discussion in a German Usenet group. The person who started the thread, actually had a question about broken core files of a multithreaded application on Linux.  I pointed him to &lt;a href="http://lwn.net/Articles/179829/"&gt; this LWN article (section: "write(), thread safety, and POSIX")&lt;/a&gt; to emphasize that Linux has several&lt;br /&gt;shortcomings in this area and told him that he might be hitting one of them.&lt;br /&gt;&lt;br /&gt;In the following discussion (never say that Linux has a weakness), someone pointed out that writing to one and the same file from multiple threads without explicit mutual exclusion is a &lt;i&gt;'fringe case'&lt;/i&gt;. Therefore, his reasoning was that, although Linux was in violation of the SUS spec, support for atomic writes wouldn't be worth the effort.  I remind him that SUS requires write, not only to be thread-safe, but additionally, to be async-signal-safe, and that one cannot ensure atomicity of writes within signal handlers using mutexes. His response was that using write from a signal was bad design and therefore also need not be supported. After saying that writing log messages or transactions to a file from multiple threads are applications that really need this support, especially when file descriptors are shared among independent processes, I didn't get another answer.&lt;br /&gt;&lt;br /&gt;Obviously one can argue about fixing this issue, because most applications can work around it. So, while I believe any violation of the SUS spec is a bug that should be fixed, there are people, especially among the Linux kernel developers, that disagree. So it really seems to be a matter of taste.&lt;br /&gt;&lt;br /&gt;Thinking about this for some time, this situation strongly reminded me of people, who believe that their 10 Euro bathroom scales from the discounter around the corner, really has 100g precision or the one in the kitchen even 1g. Yes, they show weight in a 1g or 100g granularity, but the precision is usually (unless you spend a premium) much worse. Even, if one had a kilogram of diamonds or gold, you wouldn't be weighing them with such a scale, would you?  ;-)&lt;br /&gt;&lt;br /&gt;The same accounts for drills: you can get a percussion drill for as low as 30 Euro. The other end is possibly available from Hilti, who is able to charge two to three thousand Euro. But the professional ones are made for running continuously 10 hours a day, 365 days a year, the specified output power really goes into drilling and not into creating noise, and more.&lt;br /&gt;&lt;br /&gt;OSs nowadays come for free, so they all seem to have the same price. But although Linux has a system call named write, it doesn't mean that it conforms to POSIX although it might even have the same API. Remember, write can be implemented differently, as weighing masses can be, too. So why not use the right tool for the problem at hand? Have you ever heard of a craftsman being fond of working with a 50 Euro drill from a discounter? Some might have tried and they stay really silent, because they found out that it is much more expensive, if you take the&lt;br /&gt;shortcomings into account.&lt;br /&gt;&lt;br /&gt;So work like a professional craftsman and employ an OS that is build for multithreaded applications, makes guarantees about write and every other systemcall, comes with detailed documentation and source code. &lt;b&gt;Use Solaris.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;P.S.: Click &lt;a href="http://cvs.opensolaris.org/source/xref/on/usr/src/uts/common/syscall/rw.c"&gt;here &lt;/a&gt; to take a look at the write system call of Solaris, which obviously realizes mutual exclusion for multiple threads:&lt;br /&gt;&lt;br /&gt;P.P.S.: Concerning precision - high resolution time stamp counter are synchronized on SPARC, but not on x86.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26028491-114707449121602824?l=maierkomor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maierkomor.blogspot.com/feeds/114707449121602824/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26028491&amp;postID=114707449121602824' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26028491/posts/default/114707449121602824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26028491/posts/default/114707449121602824'/><link rel='alternate' type='text/html' href='http://maierkomor.blogspot.com/2006/05/what-drills-scales-and-oss-have-in.html' title='What drills, scales, and OSs have in common...'/><author><name>Thomas Maier-Komor</name><uri>http://www.blogger.com/profile/10885556724411617546</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26028491.post-114595779846067116</id><published>2006-04-25T01:52:00.000-07:00</published><updated>2006-04-25T02:36:38.476-07:00</updated><title type='text'>How missing features sell stuff...</title><content type='html'>Developing software on and for Solaris can be real fun, considering all the tools available. OTOH, one is permanently confronted with the situation that there is a large installation base of Solaris 8 and 9. So people keep asking "Does this run on Solaris 8?". &lt;br /&gt;&lt;br /&gt;Well, how could I be able to answer this question without testing or guessing? So what can I do? I don't really want to guess! Should I install Solaris 8 on a separate disk or get another machine? What about the idea installing Solaris 8 in a zone in Solaris 10? Sounds great and convenient, doesn't it? But unfortunately, I got the answer on opensolaris.org that this won't work. Too sad!&lt;br /&gt;&lt;br /&gt;To come back to the topic: I just bought another SPARC, because Solaris is _missing_ this feature. What a weird world! &lt;br /&gt;&lt;br /&gt;Let's look at this situation once more. Could it be that Sun has already made Solaris too good to be able to sell new machines and get customers to install the new Solaris 10, which is actually free of charge? Looking at the software vendor with the biggest market share, my theory seems to be confirmed. They can easily sell their new products, as people keep hoping that everything gets better in the next release. How sad. &lt;br /&gt;&lt;br /&gt;BTW: the same seems to be true for all kinds of products. When did you buy new HIFI equipment? I don't think of MP3 players or something the like, but of real quality! Was it 10 years ago? 20? Today you even have a hard time buying real good quality Stereo amplifiers without tuner and lot's of things most people don't use and which certainly are no good for sound quality.&lt;br /&gt;&lt;br /&gt;Now I sit and wait for Christmas - erh - for my Ultra 60 to arrive. Somehow I am happy although I spent money for something that could have been achieved in a more economic way. But what did I buy? An about five year old machine - you wouldn't dare doing this with a PeeCee. Again, probably to good quality...&lt;br /&gt;&lt;br /&gt;To Sun: find out what people are willing to pay for at regular intervals and get it sold to them. Lower the quality if needed. It would be too sad if you went bankrupt, because the quality is too good. Think of HP's printers. They were once too good (my father still has an about 8 years old HP5MP).&lt;br /&gt;&lt;br /&gt;Just my $0.02...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26028491-114595779846067116?l=maierkomor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maierkomor.blogspot.com/feeds/114595779846067116/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26028491&amp;postID=114595779846067116' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26028491/posts/default/114595779846067116'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26028491/posts/default/114595779846067116'/><link rel='alternate' type='text/html' href='http://maierkomor.blogspot.com/2006/04/how-missing-features-sell-stuff.html' title='How missing features sell stuff...'/><author><name>Thomas Maier-Komor</name><uri>http://www.blogger.com/profile/10885556724411617546</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26028491.post-114536757322869693</id><published>2006-04-18T06:24:00.000-07:00</published><updated>2006-04-18T06:59:59.936-07:00</updated><title type='text'>all key metrics at a glance</title><content type='html'>When one wants to know what is happening on a system, most people start top. Solaris users have prstat, which has some advantages, but misses some values listed by top. So what do you do? I tell you what I have been doing all the time: start all of the following in seperate xterms: vmstat, iostat, prstat.&lt;br /&gt;&lt;br /&gt;This is very informative, but presents values I don't really care about and misses some I would like to have. So I wrote sysstat that presents all metrics I want at a single glance. Look here:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.maier-komor.de/sysstat.gif" /&gt;&lt;br /&gt;&lt;br /&gt;If you like this output, you can get the sources of the software &lt;a href="http://www.maier-komor.de/sysstat.html"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26028491-114536757322869693?l=maierkomor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maierkomor.blogspot.com/feeds/114536757322869693/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26028491&amp;postID=114536757322869693' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26028491/posts/default/114536757322869693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26028491/posts/default/114536757322869693'/><link rel='alternate' type='text/html' href='http://maierkomor.blogspot.com/2006/04/all-key-metrics-at-glance.html' title='all key metrics at a glance'/><author><name>Thomas Maier-Komor</name><uri>http://www.blogger.com/profile/10885556724411617546</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26028491.post-114493265145789738</id><published>2006-04-13T05:09:00.000-07:00</published><updated>2006-04-13T05:50:51.486-07:00</updated><title type='text'>xjobs &amp; DTrace</title><content type='html'>After having integrated all the features that I thought to be most important for xjobs, I considered giving it some tuning. Some things came right to my mind (object caching, more efficient token passing, and so on). But then I wanted to see, what DTrace could tell me.&lt;br /&gt;&lt;br /&gt;Unfortunately, I forgot to log my tests directly, so I reran the tests against the previous release for this blog. The old release misses the object cache and token tunings that I included before considering DTrace, but the numbers should be roughly the same, as the D script only looks at syscall times.&lt;br /&gt;&lt;br /&gt;I used the following, fairly simple script that sums up the times spent in syscalls:&lt;br /&gt;&lt;span style="font-family:Courier;"&gt;&lt;br /&gt;&lt;p id="editor"&gt;&lt;br /&gt;#!/usr/sbin/dtrace -s&lt;br /&gt;syscall:::entry&lt;br /&gt;/ execname == $$1 /&lt;br /&gt;{&lt;br /&gt;  self-&gt;ts = timestamp;&lt;br /&gt;}&lt;br /&gt;syscall:::return&lt;br /&gt;/ self-&gt;ts /&lt;br /&gt;{&lt;br /&gt;  @[probefunc] = sum(timestamp - self-&gt;ts);&lt;br /&gt;  self-&gt;ts = 0;&lt;br /&gt;}&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Then I did the following:&lt;br /&gt;&lt;span style="font-family:Courier;"&gt;&lt;br /&gt;&lt;p id="editor"&gt;&lt;br /&gt;maierkom@aquila:~$ systime xjobs&lt;br /&gt;dtrace: script '/home/maierkom/bin/sun4/systime' matched 460 probes&lt;br /&gt;^Z&lt;br /&gt;Angehalten&lt;br /&gt;maierkom@aquila:~$ bg&lt;br /&gt;[1]    systime xjobs &amp;&lt;br /&gt;maierkom@aquila:~$ /usr/bin/ls -1 /usr/sbin | src/xjobs-20060412/xjobs -v2 echo &amp;gt;&gt; &amp; /tmp/12&lt;br /&gt;maierkom@aquila:~$ fg&lt;br /&gt;systime xjobs&lt;br /&gt;^C&lt;br /&gt;&lt;br /&gt;issetugid                                                      8500&lt;br /&gt;fstat64                                                       11800&lt;br /&gt;setcontext                                                    14700&lt;br /&gt;sysconfig                                                     18400&lt;br /&gt;ioctl                                                         21400&lt;br /&gt;read                                                          30300&lt;br /&gt;getcwd                                                        43400&lt;br /&gt;brk                                                           62600&lt;br /&gt;stat                                                          95700&lt;br /&gt;resolvepath                                                  110900&lt;br /&gt;memcntl                                                      158400&lt;br /&gt;schedctl                                                    2193000&lt;br /&gt;lwp_self                                                    2504800&lt;br /&gt;getrlimit                                                   3253400&lt;br /&gt;fstat                                                       4133900&lt;br /&gt;getpid                                                      4888400&lt;br /&gt;lwp_sigmask                                                 4929800&lt;br /&gt;setpgrp                                                     5193200&lt;br /&gt;unlink                                                      6338700&lt;br /&gt;fcntl                                                       7303600&lt;br /&gt;lstat64                                                    10207400&lt;br /&gt;mmap                                                       12543500&lt;br /&gt;munmap                                                     12776900&lt;br /&gt;write                                                      15068100&lt;br /&gt;open                                                       19000800&lt;br /&gt;exece                                                     432717100&lt;br /&gt;access                                                    787848500&lt;br /&gt;fork1                                                    1721425000&lt;br /&gt;close                                                   87198287700&lt;br /&gt;waitsys                                                103746109400&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;OK, waitsys is big. I guess that's OK. But WTF is the matter with close? xjobs has to close all open filedescriptors that are not needed by the jobs forked. So I changed the filedescriptor handling, and set all&lt;br /&gt;descriptors to be closed on exec. Additionally, access uses a lot of&lt;br /&gt;time. When the utility to execute is given on the command line of xjobs,&lt;br /&gt;one only needs to search the PATH once. OK, then let's do this caching.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;After adding these changes and some the ones mentioned above concerning&lt;br /&gt;the user code, I get the following results:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:Courier;"&gt;&lt;br /&gt;&lt;p id="editor"&gt;&lt;br /&gt;dtrace: script '/home/maierkom/bin/sun4/systime' matched 460 probes&lt;br /&gt;^Z&lt;br /&gt;Angehalten&lt;br /&gt;maierkom@aquila:~$ bg&lt;br /&gt;[1]    systime xjobs &amp;amp;&lt;br /&gt;maierkom@aquila:~$ /usr/bin/ls -1 /usr/sbin | src/xjobs-20060413/xjobs -v2 echo &amp;gt; &amp;amp; /tmp/13&lt;br /&gt;maierkom@aquila:~$ fg&lt;br /&gt;systime xjobs&lt;br /&gt;^C&lt;br /&gt;&lt;br /&gt;getrlimit                                                      7100&lt;br /&gt;issetugid                                                      8700&lt;br /&gt;fstat64                                                       13900&lt;br /&gt;setcontext                                                    17400&lt;br /&gt;sysconfig                                                     19800&lt;br /&gt;ioctl                                                         23700&lt;br /&gt;read                                                          36500&lt;br /&gt;getcwd                                                        57200&lt;br /&gt;brk                                                           73300&lt;br /&gt;resolvepath                                                  106500&lt;br /&gt;stat                                                         110700&lt;br /&gt;memcntl                                                      185800&lt;br /&gt;schedctl                                                    1784700&lt;br /&gt;lwp_self                                                    2381700&lt;br /&gt;fstat                                                       2850800&lt;br /&gt;setpgrp                                                     3608200&lt;br /&gt;lwp_sigmask                                                 4380400&lt;br /&gt;getpid                                                      5376800&lt;br /&gt;unlink                                                      5641200&lt;br /&gt;access                                                      5886200&lt;br /&gt;munmap                                                      6634300&lt;br /&gt;mmap                                                        7548900&lt;br /&gt;lstat64                                                     7577200&lt;br /&gt;fcntl                                                      12572000&lt;br /&gt;write                                                      16043800&lt;br /&gt;open                                                       17121400&lt;br /&gt;close                                                      19644800&lt;br /&gt;waitsys                                                    32769800&lt;br /&gt;fork1                                                     119443300&lt;br /&gt;exece                                                     368008400&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;That looks much better. Now, let's take a look at the overall numbers:&lt;br /&gt;&lt;span style="font-family:Courier;"&gt;&lt;br /&gt;&lt;p id="editor"&gt;&lt;br /&gt;maierkom@aquila:~$ /usr/bin/ls -1 /usr/sbin | timex src/xjobs-20060412/xjobs -v2 echo &gt; /tmp/12&lt;br /&gt;&lt;br /&gt;real        6.86&lt;br /&gt;user       17.18&lt;br /&gt;sys         4.81&lt;br /&gt;&lt;br /&gt;maierkom@aquila:~$ /usr/bin/ls -1 /usr/sbin | timex src/xjobs-20060413/xjobs -v2 echo &gt; /tmp/13&lt;br /&gt;&lt;br /&gt;real        0.68&lt;br /&gt;user        0.13&lt;br /&gt;sys         0.48&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;WOW! DTrace you made my day! Factor ten for real and system time. xjobs is now really fast.&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26028491-114493265145789738?l=maierkomor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maierkomor.blogspot.com/feeds/114493265145789738/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26028491&amp;postID=114493265145789738' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26028491/posts/default/114493265145789738'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26028491/posts/default/114493265145789738'/><link rel='alternate' type='text/html' href='http://maierkomor.blogspot.com/2006/04/xjobs-dtrace.html' title='xjobs &amp; DTrace'/><author><name>Thomas Maier-Komor</name><uri>http://www.blogger.com/profile/10885556724411617546</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26028491.post-114492928627733956</id><published>2006-04-13T04:39:00.000-07:00</published><updated>2006-04-13T04:54:46.286-07:00</updated><title type='text'>Car stereo requirements</title><content type='html'>Having a new car stereo system that plays MP3 CDs is really a Nice Thing(TM). But what's odd about it, are the new requirements that come up.&lt;br /&gt;&lt;br /&gt;It started, when I began encoding some of my favorite CDs, so I could listen to them when driving. First I did everything by hand using cdda2wav and lame. Thinking, I would be probably doing it again and again, I wrote a shell script to make it a little bit more convenient and automate the process of looking up the song title, interpret and album name and encode it into the filename and directory.&lt;br /&gt;&lt;br /&gt;Fine, but then I thought: my machine has two processors, I could start two lame processes at once and get the songs encoded to mp3 in half the time. Looking at the Solaris board utilities, I couldn't find anything apropriate. Here was my odd requirement. So I wrote xjobs and published it under GPLv2. Get it &lt;a href="http://www.maier-komor.de/xjobs.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Now my shell scripts pipes its output directly to xjobs, and xjobs takes care that there are always two lame processes running. Convenient and fast.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26028491-114492928627733956?l=maierkomor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maierkomor.blogspot.com/feeds/114492928627733956/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26028491&amp;postID=114492928627733956' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26028491/posts/default/114492928627733956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26028491/posts/default/114492928627733956'/><link rel='alternate' type='text/html' href='http://maierkomor.blogspot.com/2006/04/car-stereo-requirements.html' title='Car stereo requirements'/><author><name>Thomas Maier-Komor</name><uri>http://www.blogger.com/profile/10885556724411617546</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>
