<?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-18596384</id><updated>2011-09-21T09:32:54.577+10:00</updated><category term='msosug'/><category term='solaris'/><category term='ips'/><title type='text'>Qui docet</title><subtitle type='html'>A blog by Boyd Adamson.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://quidocet.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18596384/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://quidocet.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Boyd Adamson</name><uri>http://www.blogger.com/profile/02101020181793002884</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>15</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-18596384.post-1411757215562281786</id><published>2011-01-03T12:05:00.000+11:00</published><updated>2011-01-03T12:05:00.112+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ips'/><category scheme='http://www.blogger.com/atom/ns#' term='solaris'/><title type='text'>pkg(1) and local caching of downloads</title><content type='html'>&lt;div&gt;When installing packages, the &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;pkg(1)&lt;/span&gt; command, by default, caches the downloaded files under the &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;/var/pkg&lt;/span&gt; directory.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you're using IPS to install packages from local repositories (either over the network or from the filesystem) you probably don't want to store an additional copy of files you could easily obtain again.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The caching behaviour is controlled by the local image property "flush-content-cache-on-success". Setting it to "true" will cause the cache to be emptied when packages are installed successfully:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;b&gt;boyd@sol11:~&lt;/b&gt;$ pkg property flush-content-cache-on-success    &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;PROPERTY                       VALUE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;flush-content-cache-on-success False&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;b&gt;boyd@sol11:~$&lt;/b&gt; sudo pkg set-property flush-content-cache-on-success true&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;b&gt;boyd@sol11:~$&lt;/b&gt; pkg property flush-content-cache-on-success          &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;PROPERTY                       VALUE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;flush-content-cache-on-success True&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now, after a successful package install, the cached files that were kept around from older installs are removed:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;b&gt;boyd@sol11:~$&lt;/b&gt; sudo pkg install desktop/synergy&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;               Packages to install:     1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;           Create boot environment:    No&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;DOWNLOAD                                  PKGS       FILES    XFER (MB)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Completed                                  1/1       27/27      6.7/6.7&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;PHASE                                        ACTIONS&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Install Phase                                  56/56 &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;PHASE                                          ITEMS&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Package State Update Phase                       1/1 &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Image State Update Phase                         2/2 &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;PHASE                                          ITEMS&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Reading Existing Index                           8/8&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Indexing Packages                                1/1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;b&gt;Deleting content cache&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18596384-1411757215562281786?l=quidocet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quidocet.blogspot.com/feeds/1411757215562281786/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18596384&amp;postID=1411757215562281786' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18596384/posts/default/1411757215562281786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18596384/posts/default/1411757215562281786'/><link rel='alternate' type='text/html' href='http://quidocet.blogspot.com/2011/01/pkg1-and-local-caching-of-downloads.html' title='pkg(1) and local caching of downloads'/><author><name>Boyd Adamson</name><uri>http://www.blogger.com/profile/02101020181793002884</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-18596384.post-7994156317511980731</id><published>2010-12-27T12:27:00.004+11:00</published><updated>2010-12-27T12:27:00.143+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ips'/><category scheme='http://www.blogger.com/atom/ns#' term='solaris'/><title type='text'>IPS file based repositories and zones</title><content type='html'>If you are using filesystem based (&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;file://&lt;/span&gt;) repositories with IPS, rather than network-based ones, there is one caveat to worry about when making zones.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When a zone is created on Solaris 11, the set of repos to use is copied from the global zone. If you're using network-based repositories this is normally not a problem. There could still be an issue if you use "localhost" in your repo URLs, or the non-global zone does not have access to the network repos that the global zone does.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;With filesystem-based repositories, however, the non-global zone almost certainly doesn't have access to the appropriate directories by default.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For example:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;b&gt;root@global#&lt;/b&gt; pkg publisher&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;PUBLISHER                             TYPE     STATUS   URI&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;solaris                  (preferred)  origin   online   http://localhost/&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;boyd                                  origin   online   file:/export/repo/boyd/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;b&gt;root@global#&lt;/b&gt; zoneadm -z cal install&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;A ZFS file system has been created for this zone.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;   Publisher: Using solaris (http://localhost/ ).&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;   Publisher: Using boyd (file:/export/repo/boyd/).&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;[...]&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;div&gt;&lt;b&gt;root@cal:~#&lt;/b&gt; pkg refresh&lt;/div&gt;&lt;div&gt;pkg: 0/2 catalogs successfully updated:&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Unable to contact valid package repository&lt;/div&gt;&lt;div&gt;Encountered the following error(s):&lt;/div&gt;&lt;div&gt;Unable to contact any configured publishers.&lt;/div&gt;&lt;div&gt;This is likely a network configuration problem.&lt;/div&gt;&lt;div&gt;[...]&lt;/div&gt;&lt;div&gt;2: file protocol error: code: 22 reason: The path '/export/repo/boyd' does not contain a valid package repository.&lt;/div&gt;&lt;div&gt;Repository URL: 'file:/export/repo/boyd'.&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;One way to deal with this is to loopback mount (read-only) the repo directory into the zone:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;b&gt;root@global#&lt;/b&gt; zonecfg -z cal&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;zonecfg:cal&amp;gt; add fs&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;zonecfg:cal:fs&amp;gt; set special=/export/repo/boyd&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;zonecfg:cal:fs&amp;gt; set dir=/export/repo/boyd&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;zonecfg:cal:fs&amp;gt; set type=lofs&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;zonecfg:cal:fs&amp;gt; add options ro&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;zonecfg:cal:fs&amp;gt; end&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;zonecfg:cal&amp;gt; exit&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now the zone can access the repo as it should.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18596384-7994156317511980731?l=quidocet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quidocet.blogspot.com/feeds/7994156317511980731/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18596384&amp;postID=7994156317511980731' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18596384/posts/default/7994156317511980731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18596384/posts/default/7994156317511980731'/><link rel='alternate' type='text/html' href='http://quidocet.blogspot.com/2010/12/ips-file-based-repositories-and-zones.html' title='IPS file based repositories and zones'/><author><name>Boyd Adamson</name><uri>http://www.blogger.com/profile/02101020181793002884</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-18596384.post-9074882413417804707</id><published>2010-12-20T16:05:00.000+11:00</published><updated>2010-12-20T16:05:00.808+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ips'/><category scheme='http://www.blogger.com/atom/ns#' term='solaris'/><category scheme='http://www.blogger.com/atom/ns#' term='msosug'/><title type='text'>IPS slides from MSOSUG December meeting</title><content type='html'>Another great turnout last week for the last MSOSUG meeting of the decade.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Andre talked on the &lt;a href="http://www2.purplecow.org/?p=188"&gt;Automated Installer (AI) for Solaris 11&lt;/a&gt;, while I talked about some of the &lt;a href="https://docs.google.com/viewer?a=v&amp;amp;pid=explorer&amp;amp;chrome=true&amp;amp;srcid=0B6d_KUKQgs3pYjIxYjM4OGEtZDgyNS00YTE5LTg4MTItMjNkYTFkYzQ5MDRk&amp;amp;hl=en"&gt;lesser known parts of IPS&lt;/a&gt; (Choose File -&gt; Download Original for a PDF).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There are a few points I didn't have time to cover that I'll try to mention over the next few weeks.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Hope these slides help.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18596384-9074882413417804707?l=quidocet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quidocet.blogspot.com/feeds/9074882413417804707/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18596384&amp;postID=9074882413417804707' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18596384/posts/default/9074882413417804707'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18596384/posts/default/9074882413417804707'/><link rel='alternate' type='text/html' href='http://quidocet.blogspot.com/2010/12/ips-slides-from-msosug-december-meeting.html' title='IPS slides from MSOSUG December meeting'/><author><name>Boyd Adamson</name><uri>http://www.blogger.com/profile/02101020181793002884</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-18596384.post-5997993177015708736</id><published>2007-09-13T09:34:00.000+10:00</published><updated>2010-12-20T13:11:17.136+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='msosug'/><title type='text'>MSOSUG Live upgrade slides</title><content type='html'>Great turnout last night for the inaugural MSOSUG meeting.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.users.on.net/%7Eboyd.adamson/misc/msosug-07-09-12-liveupgrade.pdf"&gt;Here&lt;/a&gt;'s the slides I used for my talk on Live Upgrade.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18596384-5997993177015708736?l=quidocet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quidocet.blogspot.com/feeds/5997993177015708736/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18596384&amp;postID=5997993177015708736' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18596384/posts/default/5997993177015708736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18596384/posts/default/5997993177015708736'/><link rel='alternate' type='text/html' href='http://quidocet.blogspot.com/2007/09/msosug-live-upgrade-slides.html' title='MSOSUG Live upgrade slides'/><author><name>Boyd Adamson</name><uri>http://www.blogger.com/profile/02101020181793002884</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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18596384.post-817397562793251794</id><published>2007-09-11T14:48:00.000+10:00</published><updated>2010-12-20T13:11:17.136+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='msosug'/><title type='text'>Melbourne Solaris and OpenSolaris Users Group tomorrow night</title><content type='html'>Please join us for our first meeting!&lt;br /&gt;&lt;br /&gt;Where?&lt;br /&gt;&lt;br /&gt;Level 7, 476 St Kilda Road, Melbourne,&lt;br /&gt;&lt;br /&gt;When?&lt;br /&gt;&lt;br /&gt;September 12th, 2007 at 18:00 for general discussion.&lt;br /&gt;Speakers start at 18:30, and we expect that each speaker will take up to one hour.&lt;br /&gt;&lt;br /&gt;Speakers:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Nathan Kroenert: Niagara 2 CPU and Architecture exploration&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Boyd Adamson: Solaris Live Upgrade: Using and abusing&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Coffee, Tea and soft drinks provided.&lt;br /&gt;&lt;br /&gt;A note on access: The Lifts in the building and entrance to Level 7 automatically lock early in the evening, so access will be provided by Sun folks on-site. A sign will also be placed close to the ground floor lifts with a contact number, should you arrive after the start of the meeting.&lt;br /&gt;The Melbourne Solaris and OpenSolaris Users Group exists to explore Solaris, OpenSolaris and closely related technologies.&lt;br /&gt;&lt;br /&gt;For those looking for more information on what this group will do in the future, come along to the first meeting, as we'll be spending some time talking about what it is that everyone is most interested in exploring. It is hoped that over time, everyone participating will have something to share with the group, be it 'their' implementation of something, or someone exploring the deeper aspects of some particular Solaris feature, right through to folks who are interested in directly contributing to the OpenSolaris movement. We'll also discuss the preferred frequency of regular meetings.&lt;br /&gt;&lt;br /&gt;If you are interested in Solaris, doing interesting things with, or on Solaris, we want YOU!&lt;br /&gt;See you there!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18596384-817397562793251794?l=quidocet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quidocet.blogspot.com/feeds/817397562793251794/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18596384&amp;postID=817397562793251794' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18596384/posts/default/817397562793251794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18596384/posts/default/817397562793251794'/><link rel='alternate' type='text/html' href='http://quidocet.blogspot.com/2007/09/melbourne-solaris-and-opensolaris-users.html' title='Melbourne Solaris and OpenSolaris Users Group tomorrow night'/><author><name>Boyd Adamson</name><uri>http://www.blogger.com/profile/02101020181793002884</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-18596384.post-5702278108526490547</id><published>2007-08-21T17:52:00.001+10:00</published><updated>2007-08-21T17:58:50.343+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='solaris'/><title type='text'>zsh DTrace Provider</title><content type='html'>&lt;p&gt;Since there’s an &lt;a href="http://www.opensolaris.org/os/community/dtrace/shells/"&gt;effort&lt;/a&gt; underway to instrument various shells with dtrace probes, I thought I’d work on my shell of choice, &lt;a href="http://www.zsh.org/"&gt;zsh&lt;/a&gt;. Also, &lt;a href="http://blogs.sun.com/brendan/"&gt;Brendan&lt;/a&gt; twisted my arm.&lt;/p&gt;We’re trying to keep some uniformity between the shells, so I’m implementing the probes that &lt;a href="http://blogs.sun.com/tpenta/"&gt;Alan Hargreaves&lt;/a&gt; has &lt;a href="http://www.opensolaris.org/os/community/dtrace/shells/sh.html"&gt;documented&lt;/a&gt;.&lt;br /&gt;&lt;p&gt;So far, I’ve mostly finished the following probes:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;builtin-entry&lt;br /&gt;builtin-return&lt;br /&gt;function-entry&lt;br /&gt;function-return&lt;br /&gt;script-done&lt;br /&gt;script-start&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;And in simple use they look like this:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;$ cat $tests/test_func_simple.zsh&lt;br /&gt;#!./zsh&lt;br /&gt;&lt;br /&gt;func()&lt;br /&gt;{&lt;br /&gt;     echo "Hello from function"&lt;br /&gt;     return 1&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;func&lt;br /&gt;&lt;br /&gt;$ dtrace -n 'zsh$target:::' -c $tests/test_func_simple.zsh&lt;br /&gt;dtrace: description 'zsh$target:::' matched 8 probes&lt;br /&gt;Hello from function&lt;br /&gt;CPU     ID                    FUNCTION:NAME&lt;br /&gt;0  51903            zsh_main:script-start&lt;br /&gt;0  51898         runshfunc:function-entry&lt;br /&gt;0  51896        execbuiltin:builtin-entry&lt;br /&gt;0  51897       execbuiltin:builtin-return&lt;br /&gt;0  51896        execbuiltin:builtin-entry&lt;br /&gt;0  51897       execbuiltin:builtin-return&lt;br /&gt;0  51899        runshfunc:function-return&lt;br /&gt;0  51902                zexit:script-done&lt;br /&gt;dtrace: pid 16530 exited with status 1&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;And for something more elaborate:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;$ cat $tests/basic_args.d&lt;br /&gt;&lt;br /&gt;#pragma D option quiet&lt;br /&gt;&lt;br /&gt;zsh$target:::builtin-entry, zsh$target:::function-entry&lt;br /&gt;{&lt;br /&gt; printf("%15s: %8s line: %d\n", probename, copyinstr(arg1), arg2);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;zsh$target:::builtin-return, zsh$target:::function-return&lt;br /&gt;{&lt;br /&gt; printf("%15s: %8s  ret: %d\n", probename, copyinstr(arg1), arg2);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;zsh$target:::script-start&lt;br /&gt;{&lt;br /&gt; printf("Script %s starts\n", copyinstr(arg0));&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;zsh$target:::script-done&lt;br /&gt;{&lt;br /&gt; printf("Script %s done, return: %d\n", copyinstr(arg0), arg1);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;$ dtrace -s $tests/basic_args.d -c $tests/test_func_simple.zsh&lt;br /&gt;Hello from function&lt;br /&gt;Script ../../tests/test_func_simple.zsh starts&lt;br /&gt;function-entry:     func line: 0&lt;br /&gt;builtin-entry:     echo line: 0&lt;br /&gt;builtin-return:     echo  ret: 0&lt;br /&gt;builtin-entry:   return line: 0&lt;br /&gt;builtin-return:   return  ret: 1&lt;br /&gt;function-return:     func  ret: 1&lt;br /&gt;Script ../../tests/test_func_simple.zsh done, return: 1&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Note that the line numbers are all zero at the moment since I haven’t provided them yet.&lt;br /&gt;There’s a few more probes to come and some cleanup to do, but I’m hoping to have a patch available soon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18596384-5702278108526490547?l=quidocet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quidocet.blogspot.com/feeds/5702278108526490547/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18596384&amp;postID=5702278108526490547' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18596384/posts/default/5702278108526490547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18596384/posts/default/5702278108526490547'/><link rel='alternate' type='text/html' href='http://quidocet.blogspot.com/2007/08/zsh-dtrace-provider.html' title='zsh DTrace Provider'/><author><name>Boyd Adamson</name><uri>http://www.blogger.com/profile/02101020181793002884</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-18596384.post-8653706965918569020</id><published>2007-07-12T15:24:00.000+10:00</published><updated>2007-07-12T15:29:37.747+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='solaris'/><title type='text'>docs.sun.com now usable!</title><content type='html'>Great news from Michelle Olsen in &lt;a href="http://www.opensolaris.org/jive/thread.jspa?threadID=34918&amp;amp;tstart=0"&gt;this thread&lt;/a&gt; at the opensolaris discussions:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;We also had a hardware upgrade last week for docs.sun.com that has made a huge difference in performance, give it a whirl.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;I've tried it and it actually feels snappy! The site had gotten so bad lately that I'd taken to downloading PDFs, rather than crawl from page to page.&lt;br /&gt;&lt;br /&gt;Hooray!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18596384-8653706965918569020?l=quidocet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quidocet.blogspot.com/feeds/8653706965918569020/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18596384&amp;postID=8653706965918569020' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18596384/posts/default/8653706965918569020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18596384/posts/default/8653706965918569020'/><link rel='alternate' type='text/html' href='http://quidocet.blogspot.com/2007/07/docssuncom-now-usable.html' title='docs.sun.com now usable!'/><author><name>Boyd Adamson</name><uri>http://www.blogger.com/profile/02101020181793002884</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-18596384.post-3035035579243017731</id><published>2006-12-06T12:51:00.000+11:00</published><updated>2006-12-06T13:00:49.494+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='solaris'/><title type='text'>Concatenating DVD iso parts for Solaris downloads</title><content type='html'>Is seems that every time a new Solaris Express release comes out, someone complains about having to unzip, then concatenate the iso image file parts for the DVD. They complain either that it needs more disk space or more disk bandwidth.&lt;br /&gt;&lt;br /&gt;Leaving aside the reasons for the split in the first place, it's pretty easy to unzip and concatenate the parts in one go. In a bourne shell derivative, for example:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;for file in sol-nv-b53-sparc-dvd-iso-*                        &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;do              &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;echo Doing $file &gt;&amp;2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;unzip -p $file&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;done &gt; sol-nv-b53-sparc-dvd.iso&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Now, &lt;span style="font-style: italic;"&gt;please&lt;/span&gt; verify the md5 sum of the file. Many problems are flushed out by doing that:&lt;br /&gt;On solaris:&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;digest -a md5 sol-nv-b53-sparc-dvd.iso&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Or more generally&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;openssl md5 sol-nv-b53-sparc-dvd.iso&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18596384-3035035579243017731?l=quidocet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quidocet.blogspot.com/feeds/3035035579243017731/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18596384&amp;postID=3035035579243017731' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18596384/posts/default/3035035579243017731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18596384/posts/default/3035035579243017731'/><link rel='alternate' type='text/html' href='http://quidocet.blogspot.com/2006/12/concatenating-dvd-iso-parts-for-solaris.html' title='Concatenating DVD iso parts for Solaris downloads'/><author><name>Boyd Adamson</name><uri>http://www.blogger.com/profile/02101020181793002884</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>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18596384.post-1937366609960463936</id><published>2006-11-20T16:42:00.000+11:00</published><updated>2006-11-20T16:48:09.274+11:00</updated><title type='text'>Sub-Optimal?</title><content type='html'>&lt;p&gt;Then they &lt;a href="http://community.livejournal.com/optimus_project/5448.html"&gt;dropped&lt;/a&gt; all the sun-like left-side function keys. This provoked uproar among the potential buyers (who are, of course, all alpha geeks with religious positions on keyboard details), so it seems they may have &lt;a href="http://community.livejournal.com/optimus_project/9434.html"&gt;changed their&lt;br /&gt;mind&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;I’ve also seen no mention of support for anything other than windows or mac for the devices that they &lt;em&gt;have&lt;/em&gt; released.&lt;/p&gt;&lt;p&gt;There are some positives:&lt;/p&gt;&lt;p&gt;&lt;blockquote&gt;Optimus 103 keyboard will be a mass storage device. That means, that Optimus&lt;br /&gt; will be the first (to the best of our knowledge) keyboard to appear on a&lt;br /&gt; desktop just like a hard disk or a flash drive. Among the benefits of this&lt;br /&gt; solution is that we won’t have to create any drivers (except for the&lt;br /&gt; OS-dependent Configurator software). Layouts could be put right into the&lt;br /&gt; keyboard’s storage.&lt;/blockquote&gt;&lt;/p&gt;&lt;p&gt;Which is kinda cool.&lt;/p&gt;&lt;p&gt;Will it be worth the ~USD400 price tag? We’ll have to wait and see what other compromises have been made.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18596384-1937366609960463936?l=quidocet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quidocet.blogspot.com/feeds/1937366609960463936/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18596384&amp;postID=1937366609960463936' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18596384/posts/default/1937366609960463936'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18596384/posts/default/1937366609960463936'/><link rel='alternate' type='text/html' href='http://quidocet.blogspot.com/2006/11/sub-optimal.html' title='Sub-Optimal?'/><author><name>Boyd Adamson</name><uri>http://www.blogger.com/profile/02101020181793002884</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-18596384.post-8908596053049455213</id><published>2006-11-20T11:05:00.000+11:00</published><updated>2006-11-20T16:17:38.840+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='solaris'/><title type='text'>Making packages</title><content type='html'>Following Eric Boutilier's latest &lt;a href="http://blogs.sun.com/eric_boutilier/entry/opensolaris_freeware_package_creation"&gt;two&lt;/a&gt; &lt;a href="http://blogs.sun.com/eric_boutilier/entry/opensolaris_freeware_package_creation_%28continued%29"&gt;posts&lt;/a&gt; on packaging and a conversation on #opensolaris, I was interested enough to try pkgbuild for myself. Of course, I'd forgotten about his earlier &lt;a href="http://blogs.sun.com/eric_boutilier/entry/table_of_contents_jds_solaris"&gt;series of posts&lt;/a&gt; on the topic, so I'd forgotten the connection to JDS.&lt;br /&gt;&lt;br /&gt;As a result, I started making packages &lt;span style="font-style: italic;"&gt;without&lt;/span&gt; the JDS CBE (Common build environment). But it's worked pretty well. For example, on a standard Solaris 10 installation (03/05 for me, but anything should work):&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:courier new;"&gt;PATH=$PATH:/usr/sfw/bin:/usr/ccs/bin export PATH&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Download the pkgbuild tool from &lt;a href="http://pkgbuild.sourceforge.net/"&gt;http://pkgbuild.sourceforge.net/&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Unpack and install with a standard command &lt;span style="font-family:courier new;"&gt;./configure  &amp;&amp;amp;amp;amp;amp; make &amp;&amp;amp; make install&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Grab this &lt;a href="http://www.users.on.net/%7Eboyd.adamson/misc/ruby.spec"&gt;spec file&lt;/a&gt; for ruby-1.8.5 that I knocked up with the help of Eric's posts and Redhat's docs.&lt;/li&gt;&lt;li&gt;As a non-root user run &lt;span style="font-family:courier new;"&gt;pkgtool --download --define="_prefix /opt/mypkgs" build-only ruby.spec&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Wait :)&lt;/li&gt;&lt;/ul&gt;It should create a &lt;span style="font-family:courier new;"&gt;~/packages&lt;/span&gt; directory, download the source file with &lt;span style="font-family:courier new;"&gt;wget&lt;/span&gt;, compile it, build a package and put it in &lt;span style="font-family:courier new;"&gt;~/packages/PKGS&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18596384-8908596053049455213?l=quidocet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quidocet.blogspot.com/feeds/8908596053049455213/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18596384&amp;postID=8908596053049455213' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18596384/posts/default/8908596053049455213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18596384/posts/default/8908596053049455213'/><link rel='alternate' type='text/html' href='http://quidocet.blogspot.com/2006/11/making-packages.html' title='Making packages'/><author><name>Boyd Adamson</name><uri>http://www.blogger.com/profile/02101020181793002884</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-18596384.post-4584748926105736202</id><published>2006-09-07T11:03:00.000+10:00</published><updated>2006-09-07T11:06:52.845+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='solaris'/><title type='text'>"Basement" processes in Solaris</title><content type='html'>All the documentation about the Solaris scheduler says that the highest priority runnable thread is chosen for execution (see, for example, section 3.8.4 of &lt;a href="http://www.solarisinternals.com/"&gt;Solaris Internals&lt;/a&gt; 2/e). At first glance that might seem to mean that the same thread will always get the CPU, if it is runnable.&lt;br /&gt;&lt;br /&gt;That is indeed what would happen if thread priorities were static, but in fact for most threads (those in the TS, IA, an FSS classes) the priority changes based on their usage of the CPU.&lt;br /&gt;&lt;br /&gt;On the other hand, the FX (fixed priority) scheduling class does &lt;span style="font-style: italic;"&gt;not&lt;/span&gt; change the priority of a thread, so that we can use it to experiment with the scheduler's behaviour.&lt;br /&gt;&lt;br /&gt;First of all, lets get ourselves some privileges. Note that we don't need this for plain priority 0 processes, but we do for using any other priority or quantum later.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ ppriv $$                                    &lt;br /&gt;449:       -zsh&lt;br /&gt;flags = &amp;lt;none&gt;&lt;br /&gt;        E: basic&lt;br /&gt;        I: basic&lt;br /&gt;        P: basic&lt;br /&gt;        L: all&lt;br /&gt;$ su root -c "ppriv -s EIP+proc_priocntl $$"&lt;br /&gt;Password: &lt;br /&gt;$ ppriv $$&lt;br /&gt;449:       -zsh&lt;br /&gt;flags = &amp;lt;none&gt;&lt;br /&gt;        E: basic,proc_priocntl&lt;br /&gt;        I: basic,proc_priocntl&lt;br /&gt;        P: basic,proc_priocntl&lt;br /&gt;        L: all&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Ok, and we'll need something that will used lots of CPU and not make system calls that cause it to sleep. This will make observing the behaviour clearer.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ cat spin.c&lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt; int i = 0;&lt;br /&gt; for (;;)&lt;br /&gt;     i++;&lt;br /&gt; exit(0);&lt;br /&gt;}&lt;br /&gt;$ gcc -o spin spin.c&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Now, let's look at the current processes that we're running.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ ps -o sid -p $$                  &lt;br /&gt;SID  449&lt;br /&gt;$ priocntl -d -i sid 449&lt;br /&gt;TIME SHARING PROCESSES: &lt;br /&gt; PID    TSUPRILIM    TSUPRI&lt;br /&gt; 449        0           0&lt;br /&gt; 593        0           0&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;So, only TS processes with no fancy characteristics.&lt;br /&gt;&lt;br /&gt;Lets now start our test program. The FX class provides user priorities that range from 0-60 (numerically higher is higher priority). We want out test program to be low priority.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ priocntl -e -c FX -m 0 -p 0 ./spin &amp;&lt;br /&gt;[1] 652&lt;br /&gt;$ priocntl -d -i sid 449&lt;br /&gt;TIME SHARING PROCESSES:&lt;br /&gt; PID    TSUPRILIM    TSUPRI&lt;br /&gt; 449        0           0&lt;br /&gt; 653        0           0&lt;br /&gt;FIXED PRIORITY PROCESSES:&lt;br /&gt; PID    FXUPRILIM    FXUPRI      FXTQNTM&lt;br /&gt; 652        0           0         200&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Good, so it's running at low priority, but on this system it has very little competition. In fact it's using close to 100% of this box's single CPU. Lets allow some time for the stats to catch up.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ prstat -c -p 652 15 5 | sed -n -e 1p -e /spin/p&lt;br /&gt;PID USERNAME  SIZE   RSS STATE  PRI NICE      TIME  CPU PROCESS/NLWP    &lt;br /&gt;652 boyd      996K  560K run      0    0   0:00:21  63% spin/1&lt;br /&gt;652 boyd      996K  560K run      0    0   0:00:36  81% spin/1&lt;br /&gt;652 boyd      996K  560K run      0    0   0:00:51  91% spin/1&lt;br /&gt;652 boyd      996K  560K run      0    0   0:01:06  95% spin/1&lt;br /&gt;652 boyd      996K  560K run      0    0   0:01:21  97% spin/1&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Now, we start another job at the same priority.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ priocntl -e -c FX -m 0 -p 0 ./spin &amp;amp;&lt;br /&gt;[2] 660&lt;br /&gt;$ priocntl -d -i sid 449TIME SHARING PROCESSES:&lt;br /&gt; PID    TSUPRILIM    TSUPRI&lt;br /&gt; 449        0           0&lt;br /&gt; 661        0           0&lt;br /&gt;FIXED PRIORITY PROCESSES:&lt;br /&gt;&lt;br /&gt; PID    FXUPRILIM    FXUPRI      FXTQNTM&lt;br /&gt; 652        0           0         200&lt;br /&gt; 660        0           0         200&lt;br /&gt;$ prstat -c -p 652,660 60 2 | sed -n -e 1p -e /spin/p -e 's/^Total.*//p'&lt;br /&gt;PID USERNAME  SIZE   RSS STATE  PRI NICE      TIME  CPU PROCESS/NLWP    &lt;br /&gt;652 boyd      996K  560K run      0    0   0:01:45  71% spin/1&lt;br /&gt;660 boyd      996K  560K run      0    0   0:00:08  27% spin/1&lt;br /&gt;&lt;br /&gt;652 boyd      996K  560K run      0    0   0:02:15  51% spin/1&lt;br /&gt;660 boyd      996K  560K run      0    0   0:00:37  48% spin/1&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;And we see that the two jobs are sharing the CPU nearly equally.&lt;br /&gt;&lt;br /&gt;Now, lets tweak a little. First, notice that the two jobs have the same quantum, which means that they'll have the CPU for the same amount of time each time they are scheduled (assuming that no higher priority job preempts them).&lt;br /&gt;&lt;br /&gt;Let's experiment with that quantum by halving the time for one process.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ priocntl -s -t 100 -i pid 660&lt;br /&gt;$ priocntl -d -i sid 449&lt;br /&gt;TIME SHARING PROCESSES:&lt;br /&gt; PID    TSUPRILIM    TSUPRI&lt;br /&gt; 449        0           0&lt;br /&gt; 669        0           0&lt;br /&gt;FIXED PRIORITY PROCESSES:&lt;br /&gt; PID    FXUPRILIM    FXUPRI      FXTQNTM&lt;br /&gt; 652        0           0         200&lt;br /&gt; 660        0           0         100&lt;br /&gt;$ prstat -c -p 652,660 60 2 | sed -n -e 1p -e /spin/p -e 's/^Total.*//p'&lt;br /&gt;PID USERNAME  SIZE   RSS STATE  PRI NICE      TIME  CPU PROCESS/NLWP    &lt;br /&gt;652 boyd      996K  560K run      0    0   0:02:36  54% spin/1&lt;br /&gt;660 boyd      996K  560K run      0    0   0:00:55  44% spin/1&lt;br /&gt;&lt;br /&gt;652 boyd      996K  560K run      0    0   0:03:15  64% spin/1&lt;br /&gt;660 boyd      996K  560K run      0    0   0:01:16  35% spin/1&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;As we might expect, the adjusted process now has half as much CPU time as the other one.&lt;br /&gt;&lt;br /&gt;Next, let's set the quantum back to its default value and bump the priority up by one.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ priocntl -s -t 200 -m 1 -p 1 -i pid 660&lt;br /&gt;$ priocntl -d -i sid 449&lt;br /&gt;TIME SHARING PROCESSES:&lt;br /&gt; PID    TSUPRILIM    TSUPRI&lt;br /&gt; 449        0           0&lt;br /&gt; 677        0           0&lt;br /&gt;FIXED PRIORITY PROCESSES:&lt;br /&gt; PID    FXUPRILIM    FXUPRI      FXTQNTM&lt;br /&gt; 652        0           0         200&lt;br /&gt; 660        1           1         200&lt;br /&gt;$ prstat -c -p 652,660 120 2 | sed -n -e 1p -e /spin/p -e 's/^Total.*//p'&lt;br /&gt;PID USERNAME  SIZE   RSS STATE  PRI NICE      TIME  CPU PROCESS/NLWP    &lt;br /&gt;660 boyd      996K  560K run      1    0   0:02:00  67% spin/1&lt;br /&gt;652 boyd      996K  560K run      0    0   0:04:07  30% spin/1&lt;br /&gt;&lt;br /&gt;660 boyd      996K  560K run      1    0   0:04:40  99% spin/1&lt;br /&gt;652 boyd      996K  560K run      0    0   0:04:07 0.0% spin/1&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Wow! That's really made a difference. Process 660 is getting a lot of CPU. That makes sense, since it has a higher priority and so, based on our initial premise, we'd assume it gets chosen over the lower priority process every time.&lt;br /&gt;&lt;br /&gt;Let's see if that's really the case. First we need some extra privileges so that we can use DTrace.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ su root -c "ppriv -s EIP+dtrace_kernel,dtrace_proc,dtrace_user $$"&lt;br /&gt;Password:&lt;br /&gt;$ ppriv $$&lt;br /&gt;449:       -zsh&lt;br /&gt;flags = &amp;lt;none&gt;&lt;br /&gt;     E: basic,dtrace_kernel,dtrace_proc,dtrace_user,proc_priocntl&lt;br /&gt;     I: basic,dtrace_kernel,dtrace_proc,dtrace_user,proc_priocntl&lt;br /&gt;     P: basic,dtrace_kernel,dtrace_proc,dtrace_user,proc_priocntl&lt;br /&gt;     L: all&lt;br /&gt;$ dtrace -q -n 'sched:::on-cpu /execname == "spin"/ {@[pid] = count()} tick-5sec { exit(0) }'&lt;br /&gt;&lt;br /&gt;   660              103&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Yep, just as we expected, process 652 has not been scheduled even once in our sampling period of 5 seconds. It's getting absolutely no CPU time at all.&lt;br /&gt;&lt;br /&gt;Just to be sure, let's make the two priorities equal again and check again with DTrace to see that they are being scheduled more evenly.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ priocntl -s -m 0 -p 0 -i pid 660&lt;br /&gt;$ dtrace -q -n 'sched:::on-cpu /execname == "spin"/ {@[pid] = count()} tick-5sec { exit(0) }'&lt;br /&gt;&lt;br /&gt;   660               50&lt;br /&gt;   652               57&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;So, in summary, processes at the lowest priority level (0 in FX) will be starved of CPU time by anything on the system at a higher priority. Processes at the same priority level can have time apportioned between them using mechanisms such as the quantum.&lt;br /&gt;&lt;br /&gt;The interaction between the FX and other scheduling classes becomes more complicated thanks to the appearance of global priorities into the equation, but that's a subject for another post. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18596384-4584748926105736202?l=quidocet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quidocet.blogspot.com/feeds/4584748926105736202/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18596384&amp;postID=4584748926105736202' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18596384/posts/default/4584748926105736202'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18596384/posts/default/4584748926105736202'/><link rel='alternate' type='text/html' href='http://quidocet.blogspot.com/2006/09/basement-processes-in-solaris.html' title='&quot;Basement&quot; processes in Solaris'/><author><name>Boyd Adamson</name><uri>http://www.blogger.com/profile/02101020181793002884</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-18596384.post-113340863909046212</id><published>2005-12-01T14:38:00.000+11:00</published><updated>2005-12-01T18:01:05.653+11:00</updated><title type='text'>How do I customise an SMF service?</title><content type='html'>After a conversation on #opensolaris I thought it would be useful to explain how to get SMF to run services that you have installed yourself that are really updated versions of ones that ship with solaris.&lt;br /&gt;&lt;br /&gt;The one in question was DNS. "&lt;span style="font-style: italic;"&gt;Solaris10&lt;/span&gt;" had installed his own version of named in &lt;span style="font-family:monospace;"&gt;/usr/local/sbin/named&lt;/span&gt; and wanted to get SMF to start it. When I arrived there was discussion about editing the manifest file (&lt;span style="font-family:monospace;"&gt;/var/svc/manifest/network/dns/server.xml&lt;/span&gt;) or copying it and making another.&lt;br /&gt;&lt;br /&gt;As it turns out, neither of those is needed or particularly good. Edits to the system supplied file may be overwritten by a future patch or upgrade and making your own service means you won't get the benefits of those upgrades and patches.&lt;br /&gt;&lt;br /&gt;So, how is it done?&lt;br /&gt;&lt;br /&gt;The answer is that many attributes of services are parameterized into &lt;span style="font-style: italic;"&gt;properties&lt;/span&gt; of the service. Those properties can be changed on your system without editing the manifest files, and they are not broken by updates.&lt;br /&gt;&lt;br /&gt;You can view the properties for a service with:&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;# svcprop  dns/server&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;This lists them all. The one we're interested in is called "exec" in the &lt;span style="font-style: italic;"&gt;property group&lt;/span&gt; "start", so to just see that one:&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;# svcprop -p start/exec dns/server&lt;br /&gt;/usr/sbin/named&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;To change a property, use svccfg as follows:&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;# svccfg&lt;br /&gt;svc:&gt; select dns/server:default&lt;br /&gt;svc:/network/dns/server:default&gt; listprop start/exec&lt;br /&gt;start/exec  astring  /usr/sbin/named&lt;br /&gt;svc:/network/dns/server:default&gt; setprop start/exec = /usr/local/sbin/named&lt;br /&gt;svc:/network/dns/server:default&gt; listprop start/exec&lt;br /&gt;start/exec  astring  /usr/local/sbin/named&lt;br /&gt;svc:/network/dns/server:default&gt; quit&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Then you need to refresh the service:&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;# svcadm refresh dns/server&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;And now, start it:&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;# svcadm start dns/server&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Finally, you can actually make the svccfg part much shorter with:&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;# svccfg -s dns/server:default setprop start/exec = /usr/local/sbin/named&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18596384-113340863909046212?l=quidocet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quidocet.blogspot.com/feeds/113340863909046212/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18596384&amp;postID=113340863909046212' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18596384/posts/default/113340863909046212'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18596384/posts/default/113340863909046212'/><link rel='alternate' type='text/html' href='http://quidocet.blogspot.com/2005/12/how-do-i-customise-smf-service.html' title='How do I customise an SMF service?'/><author><name>Boyd Adamson</name><uri>http://www.blogger.com/profile/02101020181793002884</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-18596384.post-113205502958979442</id><published>2005-11-15T22:23:00.000+11:00</published><updated>2005-11-15T22:46:16.963+11:00</updated><title type='text'>A fool and..</title><content type='html'>Many product areas have got to the point where they have a problem. Modern technology and manufacturing techniques have made it possible to create perfectly adequate items for very low cost. The watch market is a perfect example. The Swiss industry built a reputation on making quality items in an age where dozens of moving parts needed to be precision manufactured to make a good watch. There was an actual functional difference between a cheap watch and an expensive one.&lt;br /&gt;&lt;br /&gt;Quartz movements ruined all that. Suddenly it was possible to make a watch that was more accurate, reliable and robust than the best mechanical one for about five bucks. So what did they do? With some exceptions, they continued to make "prestige" watches, which these days consist of mercurial fashions made from ludicrously decadent materials. (I'd provide links to examples, but the industry seems to revel in the most egregious use of Flash that I've seen anywhere).&lt;br /&gt;&lt;br /&gt;High-end audio has, like any other field catering to those with more money to spend than is needed to build a well-performing product, produced a whole subset of the industry that sells stuff that is sold as "premium" but has absolutlely nothing to support that claim. The "audiophile" area seems to attract an unusually high level of pseudo-science. With all that in mind, I think it's worth mentioning that it is at least fun to point and laugh at some of the more extreme &lt;a href="http://www.ilikejam.dsl.pipex.com/audiophile.htm"&gt;examples&lt;/a&gt; of what those idiots will buy:&lt;br /&gt;&lt;blockquote&gt;Apparently, &lt;em&gt;"OPUS MM unleashes thrilling levels of performance..."&lt;/em&gt;. That may well be so, but OPUS MM also unleashes &lt;em&gt;thrilling&lt;/em&gt; amounts of cash from your obviously overfull audiophile wallet. Your shiny new speaker cable will set you back a truly outstanding thirty thousand, seven hundred and fifty dollars, and no cents. I'll say that again: $30,750.00 &lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18596384-113205502958979442?l=quidocet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quidocet.blogspot.com/feeds/113205502958979442/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18596384&amp;postID=113205502958979442' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18596384/posts/default/113205502958979442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18596384/posts/default/113205502958979442'/><link rel='alternate' type='text/html' href='http://quidocet.blogspot.com/2005/11/fool-and.html' title='A fool and..'/><author><name>Boyd Adamson</name><uri>http://www.blogger.com/profile/02101020181793002884</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-18596384.post-113200597136819153</id><published>2005-11-15T09:03:00.000+11:00</published><updated>2005-11-15T10:32:37.436+11:00</updated><title type='text'>Enter Nexenta</title><content type='html'>Well, I had a whole post ready to go following the announcement of Debian GNU/Solaris the other day. It didn't make it to the net, however, since I was tied up with flights and what-not. Anyway, it's now irrelevant, since it was based on speculation about the new kid on the &lt;a href="http://www.opensolaris.org"&gt;OpenSolaris&lt;/a&gt; block. Who knew that they would be &lt;a href="http://www.gnusolaris.org/gswiki"&gt;launching&lt;/a&gt; the actual software within 3 days?&lt;br /&gt;&lt;br /&gt;So, now I've tried it out, and I've gotta say it's &lt;span style="font-style: italic;"&gt;nice&lt;/span&gt;. It's not fast on QEMU (that wasn't helped by my Xserver crashing part way through the first ever boot, leaving it unusable), but it's nice, nonetheless.&lt;br /&gt;&lt;br /&gt;I do wonder how some decisions were made, though. For example, it looks like the &lt;span style="font-family: monospace;"&gt;ls&lt;/span&gt; command used is the GNU version, not the OpenSolaris version. I can see that some people would like the &lt;span style="font-family: monospace;"&gt;--color&lt;/span&gt; option that the GNU version provides (I'm not one of them), but some functionality is lost as a result. For example, the Solaris &lt;span style="font-family: monospace;"&gt;ls&lt;/span&gt; has long included the ability to show the presence of ACLs and extended attributes (with &lt;span style="font-family: courier new;"&gt;-@&lt;/span&gt;), as well as the new &lt;span style="font-family: monospace;"&gt;-e&lt;/span&gt; and &lt;span style="font-family: monospace;"&gt;-E &lt;/span&gt;options. I hope they haven't thrown out the baby with the bathwater.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18596384-113200597136819153?l=quidocet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quidocet.blogspot.com/feeds/113200597136819153/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18596384&amp;postID=113200597136819153' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18596384/posts/default/113200597136819153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18596384/posts/default/113200597136819153'/><link rel='alternate' type='text/html' href='http://quidocet.blogspot.com/2005/11/enter-nexenta.html' title='Enter Nexenta'/><author><name>Boyd Adamson</name><uri>http://www.blogger.com/profile/02101020181793002884</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-18596384.post-113100340643986088</id><published>2005-11-03T18:05:00.000+11:00</published><updated>2005-11-07T18:13:49.196+11:00</updated><title type='text'>Good Morning...</title><content type='html'>So what should I say in a first post? No idea, except to that that I'm stoked that the wait for &lt;a href="http://blogs.sun.com/roller/page/bonwick/20051031"&gt;ZFS&lt;/a&gt; is almost over.&lt;br /&gt;&lt;br /&gt;If you haven't been following the details of ZFS - or you have been following by reading the &lt;a href="http://www.theregister.co.uk/2005/11/02/sun_zfs_coming/"&gt;trade press&lt;/a&gt;, which amounts to the same thing - the best recent technical description of ZFS than I know of is the set of &lt;a href="http://mediacast.sun.com/details.jsp?id=394"&gt;slides&lt;/a&gt; that &lt;a href="http://blogs.sun.com/roller/page/jmcp/20051017"&gt;James McPherson&lt;/a&gt; used at the recent SOSUG4 meeting&lt;br /&gt;&lt;br /&gt;I think it will be a great paradigm shift in how we look at filesystems. Not all the concepts are new for those of us with an interest in filesystems (pooled storage, compression, quotas and copy-on-write have been seen before in production filesystems) but it's the combination of these features with other unique approaches to performance, reliability and usability that I'm excited about.&lt;br /&gt;&lt;br /&gt;One question nags at the back of my mind... once I have a system with large ZFS pools including many filesystems and snapshots, how do I back the whole thing up? Not just the contents of one filesystem, but the whole thing?&lt;br /&gt;&lt;br /&gt;James mentions "real-time remote replication" so for offsite backups that may be a moot point. Sun's recent purchase of StorageTek suggests that they don't think the era of tape backup is over yet, though. Maybe the Data Management Unit (DMU) layer will do heirarchical storage...&lt;br /&gt;&lt;br /&gt;The other intriguing aspect of James' slides is the part about using DMU as a "general purpose transactional data store". Apart from the awful, frankensteinesque beast that is UFS/zvol/DMU I think there's some real potential for innovation at this level... &lt;a href="http://www.namesys.com/"&gt;Reiser4&lt;/a&gt; semantics on top of ZFS foundations, anyone?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18596384-113100340643986088?l=quidocet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quidocet.blogspot.com/feeds/113100340643986088/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18596384&amp;postID=113100340643986088' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18596384/posts/default/113100340643986088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18596384/posts/default/113100340643986088'/><link rel='alternate' type='text/html' href='http://quidocet.blogspot.com/2005/11/good-morning.html' title='Good Morning...'/><author><name>Boyd Adamson</name><uri>http://www.blogger.com/profile/02101020181793002884</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>
