fintanr's weblog

Archives

« May 2005 »
MonTueWedThuFriSatSun
      
1
2
5
6
7
8
9
10
11
12
13
14
15
16
17
18
20
21
22
23
25
27
28
29
31
     
Today

the links




Twitter Updates

    follow me on Twitter
















    20050530 Monday May 30, 2005

    Xmms audio output on solaris
    Not really a gotcha, although not being able to listen to tunes has had been known to cause a dip in my productivity ;), but I'm sure it may catch someone out and cause some annoyance - the default installation of Xmms from blastwave.org will come up with an error about being unable to find devices (generally something like /dev/dsp can't be found), giving you something like the following.


    The solution is to update your preferences to use the Solaris Audio plugin rather than libOSS, just do a ctrl-p while in xmms to call up your preferences, you should get the dialog below, and select the Solaris Audio driver.

    And of course if your not using blastwave.org, go take a look. These folks are providing a fantastic, and extremely usefull, service for the Solaris community (personally things such as mutt, gnupg, xmms etc all come down from blastwave as soon as I reinstall my box).
    (2005-05-30 03:31:27.0) Permalink Comments [0]

    20050526 Thursday May 26, 2005

    Suns Performance Lifestyle : Buzzword Bingo and High Level Bug Evaluation
    This post falls out of a converstation I had with my boss earlier this week. We were discussing a (non) issue which had emerged in a conference call that I had attended the week before, where I was asked are there any peformance problems in the latest builds of a new product, my answer was "not directly in the product, but one of the benchmarks has highlighted a problem in build blah of another product", to which I got an answer of "oh thats okay, its not in our test matrix anyway".

    Now I'll skip how infuriating that comment was [1] (suffice to say I am of the opinion if there are free cycles available on a rig and you have benchmarked everything that needs to be benchmarked, well add another combination and benchmark that as well, and if its a combination that you have no doubt that a customer is eventually going to deploy it should be in your matrix - idle machines are a waste of valuable resources. Needless to say this applies to QA work as well), and instead use some buzzwords - leveraging synergies [ yes the dilbert link is intentional ].

    Synergy is one of these words that upper management in every company loves, and as for leveraging, yes the MBA's are going wild at that one. Anyway what does this "leveraging synergies" mean in reality? In our case it means joining all the dots of what we are doing already, and highlighting this information. Okay, that sounds like MBA speak as well (hey, I thought of doing one at one stage, but then I reflected on Ross Perots famous comment (paraphrasing here) that he "never willingly hired an MBA" [2]). Our initial goal is focused on Solaris, so we run a Solaris matrix that looks like the following

    Solaris 9 Update 7 (static) Solaris 9 + Patches (evolving)
    [1..x]
    Solaris 10 (static) OpenSolaris (Nevada) (evolving)
    [1..x]
    Solaris 10 + Patches (evolving)
    [1..x]
    Solaris 10 Update 1 (evolving)
    [1..x]

    Now the thing is that you as an end user will generally be much more interested in the performance of the app that is running on Solaris, and in our case we need these userland apps to effectively measure the kernel performance. So say we add in a specific version of these apps into our matrix.

    App X (static) Solaris 9 Update 7 (static) Solaris 9 + Patches (evolving)
    [1..x]
    Solaris 10 (static) OpenSolaris (Nevada) (evolving)
    [1..x]
    Solaris 10 + Patches (evolving)
    [1..x]
    Solaris 10 Update 1 (evolving)
    [1..x]
    App Y (static) Solaris 9 Update 7 (static) Solaris 9 + Patches (evolving)
    [1..x]
    Solaris 10 (static) OpenSolaris (Nevada) (evolving)
    [1..x]
    Solaris 10 + Patches (evolving)
    [1..x]
    Solaris 10 Update 1 (evolving)
    [1..x]
    App Z (static) Solaris 9 Update 7 (static) Solaris 9 + Patches (evolving)
    [1..x]
    Solaris 10 (static) OpenSolaris (Nevada) (evolving)
    [1..x]
    Solaris 10 + Patches (evolving)
    [1..x]
    Solaris 10 Update 1 (evolving)
    [1..x]

    Okay, so this just looks like slightly more combinations. Where does the "leveraging synergies" come into this? Within Sun we are not just interested in kernel performance, we are interested in what is known as "complete system" performance, so this means looking at the application as well. The real benefits here (or "leveraging synergies" for the buzzword bingo players) begins when we start revving the versions of the userland applications that we are using in our benchmarks, giving us a matrix like the following...

    App X (evolving)
    [1..x]
    Solaris 9 Update 7 (static) Solaris 9 + Patches (evolving)
    [1..x]
    Solaris 10 (static) OpenSolaris (Nevada) (evolving)
    [1..x]
    Solaris 10 + Patches (evolving)
    [1..x]
    Solaris 10 Update 1 (evolving)
    [1..x]
    App Y (evolving)
    [1..x]
    Solaris 9 Update 7 (static) Solaris 9 + Patches (evolving)
    [1..x]
    Solaris 10 (static) OpenSolaris (Nevada) (evolving)
    [1..x]
    Solaris 10 + Patches (evolving)
    [1..x]
    Solaris 10 Update 1 (evolving)
    [1..x]
    App Z (static) Solaris 9 Update 7 (static) Solaris 9 + Patches (evolving)
    [1..x]
    Solaris 10 (static) OpenSolaris (Nevada) (evolving)
    [1..x]
    Solaris 10 + Patches (evolving)
    [1..x]
    Solaris 10 Update 1 (evolving)
    [1..x]

    Now we have a much fuller picture of complete system performance, for relatively little more investment. For the purposes of a practical example lets break this down a bit, say we end up with the following matrix of results after a set of runs of application X on a set of OS images.

    App X
    [n]
    Solaris 9 Update 7 (static) Solaris 9 + Patches (evolving)
    [n]
    Solaris 10 (static) OpenSolaris (Nevada) (evolving)
    [n]
    Solaris 10 + Patches (evolving))
    [n]
    Solaris 10 Update 1 (evolving))
    [n]
    App X
    [n+1]
    Solaris 9 Update 7 Solaris 9 + Patches
    [n+1]
    Solaris 10 OpenSolaris (Nevada)
    [n]
    Solaris 10 + Patches
    [n+1]
    Solaris 10 Update 1
    [n+1]

    So here it is quite obvious that a new patch on Solaris 9 is causing the problem, so this is where we starting looking. Whereas if we saw the following matrix

    App X
    [n]
    Solaris 9 Update 7 (static) Solaris 9 + Patches (evolving)
    [n]
    Solaris 10 (static) OpenSolaris (Nevada) (evolving)
    [n]
    Solaris 10 + Patches (evolving))
    [n]
    Solaris 10 Update 1 (evolving))
    [n]
    App X
    [n+1]
    Solaris 9 Update 7 Solaris 9 + Patches
    [n+1]
    Solaris 10 OpenSolaris (Nevada)
    [n]
    Solaris 10 + Patches
    [n+1]
    Solaris 10 Update 1
    [n+1]

    It becomes pretty obvious that build n+1 of App X is causing our problem in combination with some resource that it is using in Solaris 9 that has evolved in Solaris 10, and we begin our bug hunt by focusing our search there.

    The benefit of creating these large combinatorial matrices for Sun, and obviously for the members of our group, is a more worthwhile, and higher value add, usage of our time (and Sun's resources). Narrowing down our inital search field for a bug saves us a huge amount of time, and also allows us to assist the developers in a much more detailed manner by providing a greater amount of pertinent information, and the actual cost is maybe another day or two of benchmarking, which in turn may also highlight other potential problems. And as I mentioned before this all happens automatically, so we don't even have to think about it.


    [1] Infuriating, but dealt with
    [2] I actually disagree with this, an MBA is a usefull qualification, but only with some practical experience. Someone going straight from a degree to an MBA and then the workplace is of no use to anyone, the benefits of an MBA only accrue when you have a decent amount of real world experience to base your opinions on and and apply your MBA to.
    (2005-05-26 06:18:57.0) Permalink Comments [0]

    20050524 Tuesday May 24, 2005

    Managers blog......
    So our manager (or ex-engineer as we prefer to call him) has joined bsc, drum roll please....... introducing Damien Farnham. Back in his engineering days he worked on things such as TPC and the like (predominantly focused on Sybase). Or so he likes to tell us ;). These days he does all of that management stuff that us engineers like to avoid ;).
    (2005-05-24 05:14:24.0) Permalink Comments [0]

    20050519 Thursday May 19, 2005

    Not nuking your Access Manager ldap config.....
    This one caught me today, so time to share and help avoid ;). I wasn't watching what I had in a script for adding ldif data to a directory server for an Access Manager benchmark that we run as part of our ongoing Java Enterprise System benchmarking effort.

    When you install Access Manager it creates a bunch of entries in your directory server related to the access manager. Now to add some userdata into this I generated a 100,000 user file with MakeLDIF from slamd, lets say its /tmp/foo.ldif, and added it into my userRoot instance of the directory server using ldif2db.

    ldif2db -n userRoot -i /tmp/foo.ldif
    
    All fine one would think, but it actually rebuilds the entire user root, and hence when I try to access the Access Manager login screen I get the following error in my logs (/var/opt/SUNWam/amAuthentication.error in this case).
    "2005-05-19 15:09:11"   "Invalid Domain"        amAuthentication.error  AUTHENTICATION-20
    "Not Available"    "Not Available" INFO    "Not Available" "Not Available" 
    "cn=dsameuser,ou=DSAME Users,dc=jestest,dc=sun,dc=com"     "Not Available"
    
    So what I should have done is backup the original contents and add them back in, like so
    ./db2ldif -n userRoot -a /tmp/bkup.ldif
    ./ldif2db -n userRoot -i /tmp/bkup.ldif -i /tmp/foo.ldif
    
    And now back to my regular scheduled work....

    [ update - May 20th ]
    Just noticed I had a typo in the ldif2db ordering, the original ldif file has to go first or you end up in the situation I was in initially.
    (2005-05-19 08:01:28.0) Permalink Comments [2]

    20050504 Wednesday May 04, 2005

    uint*_t and standards
    After my post about getting libnjb to compile on Solaris I got a couple of comments around uint*_t types, and why we defined uint's in the manner that we do. Mainly because the convention we use is a standard, as per Ansi C99, the Single Unix Specification (which supercedes Posix and XPG).

    Unfortunately all of these specs cost money to download (something of a bone of contention with me, open standards should be free to view), but the best online explanation that I can find is available in this article by Michael Barr over on O'Reilly. From that article I quote

    In hindsight, it sure would have been nice if the authors of the C standard had defined 
    some standard names and made compiler providers responsible for providing the appropriate 
    typedef for each fixed-size integer type in a library header file. Alternatively, of 
    course, the C standard could have specified (as Java does) that each of the types short, 
    int, and long has a standard width on all platforms; but that can have an impact on 
    performance, particularly on 8-bit processors that must implement 16- and 32-bit additions 
    in multi-instruction sequences.
    
    Interestingly, it turns out that the authors of a 1999 update to the ISO C standard 
    (hereafter "C99") did just that. It seems the ISO organization has finally put the weight 
    of its standard behind a preferred set of names for signed and unsigned fixed-size integer 
    data types. The newly defined type names are as follows:
    
    8-bit:  int8_t   uint8_t
    16-bit: int16_t  uint16_t
    32-bit: int32_t  uint32_t
    64-bit: int64_t  uint64_t
    
    So there you go.

    [ update - 05/05/05 ]
    A couple of people have commented that you can access the Unix O3 spec here, thanks for the clarification. Anyone got a url for a C99 spec that they can point us at?

    [update - 07/05/05 ]
    Terry Lambert pointed me at a C99 spec.
    (2005-05-03 20:29:08.0) Permalink Comments [6]

    20050503 Tuesday May 03, 2005

    Echo Chambers?
    Fascinating article over on The Register entitled SCO, Groklaw and the Monterey mystery that never was. Its a lot closer to the history that I remember around project monterey.

    Whats interesting is the commentary about online forums turning into "echo chambers" (or could that be Harry Potter and the chambers of conspiracy?). The current echo on slashdot around this story is sadly predictable.
    (2005-05-02 16:29:41.0) Permalink Comments [2]