Solaris 10

DTrace: Solaris Dynamic Tracing


Running very large DTrace Scripts

DTrace scripts may reject to work when you try to run very large scripts with hundreds of enablings or thousands of actions.

Error message:

dtrace: failed to enable './myDtraceProbe.d'' : DIF program exceeds maximum program size

Reason: The current default size for DTrace is 256K. This may be to small for some probes.

Solution 1: Increase the default size in file /etc/system. You will require to have root privileges.

set dtrace:dtrace_dof_maxsize=0x800000

Reboot the system after the change.

Disclaimer: Changes to the /etc/system file change the behavior of the entire system. Consult your system administrator upfront!

Solution 2: Set the parameter dynamically with mdb (Solaris Modular Debugger)

# mdb -kw

Loading modules: [ ... ]
> dtrace_dof_maxsize/E
dtrace_dof_maxsize: 262144
> dtrace_dof_maxsize/Z 0t524288
dtrace_dof_maxsize: 0x40000 = 0x80000
> dtrace_dof_max_size/E
dtrace_dof_maxsize: 524288

Disclaimer: Work with mdb is the equivalent to open heart surgery on your Solaris system. Any change has direct and system wide impact. Consider to use a /etc/system entry (see solution 1) and a reboot instead of.

SMF Manifests for Solaris Applications

The Solaris Management Facility requires manifests to take applications under its control as a service.

This is a list of known and publicly available SMF manifests for Solaris applications:

Vendor/Project Application Comment
Apache CouchDB  
bauhaus/eclipse Jetty  
EMC Legato Networker  
Hyperic Hyperic Agent  
  Tivoli (storage manager client)  
  Websphere Application Server 6.1  
Lighttpd Lighttpd  
Mongrel (web server) Mongrel cluster  
Nagios Nagios  
nginx (web server) nginx  
OCLC EZproxy  
Oracle Virtualbox (headless)  

Database 11g on x86

Database in general

Excellent white paper including RBAC and projects integration for Solaris x86
Perforce Perforce  
Pootle Pootle Postfix  
PostgreSQL PostgreSQL  
Rails/Mongrel Cluster Rails/mongrel_cluster Published by Joyent
Redhat JBOSS Application Server  
SAP ERP 6.0 SAP Community Network
  Sybase ASE  
Splunk Splunk 3.x squid (proxy)  
Subversion Subversion   
Symantec Veritas Storage Foundation  
Talend Talend Integration Suite  
Traffix Traffix  
Others TCP tuning manifest Tunes the fairly conservative TCP parameters from Solaris 10

Other Resources

Do you happen to know more SMF manifest? Please leave a comment. I''ll be glad  to add them.

Solaris 10 Files and SVR4 Packages

The page explains how to match system files and the packages they belong to in Solaris 10.

How to find the Solaris 10 Package a File belongs to?

An example: You want to know which package /usr/ucb/whoami belongs to?

Option 1: Using the pkgchk Command

The pkgchk command will reveil all details about the file-

bash-3.00$ /usr/sbin/pkgchk -l -p /usr/ucb/whoami

NOTE: Couldn't lock the package database.

Pathname: /usr/ucb/whoami

Type: regular file

Expected mode: 0755

Expected owner: root

Expected group: bin

Expected file size (bytes): 5708

Expected sum(1) of contents: 49676

Expected last modification: Jan 23 03:03:26 2005 Referenced by the following packages:


Current status: installed

The note about the non locked database arises from the fact that the command hasn't been called with root privileges.

Option 2: The quick and dirty Approach

The non API way to find a SVR4 package a file belongs to seams to be the system file /var/sadm/install/contents. This is the place Solaris 10 tracks all installed files. Using grep on the file /var/sadm/install/contents is quite comfortable for bulk searches since the pkgchk command takes significant more time.

bash-3.00$ which whoami


bash-3.00$ grep /usr/ucb/whoami /var/sadm/install/contents

/usr/ucb/whoami f none 0755 root bin 5708 49676 1106445806 SUNWscpu

The answer is  SUNWscpu!

bash-3.00$ pkginfo SUNWscpu system SUNWscpu Source Compatibility, (Usr)

The file contents is normally readable by any user. No special privileges are required.

Warning: The file contents is the package database of the system. A corruption of this file will not allow anymore to install packages!

Solaris Autoregistration (S10 9/10)

The new Solaris update release Solaris 10 9/10 is out. The product ships with Oracle branding and licensing and it has a new feature the "autoregistration".

I used to Virtualbox sandbox to figure out what the impact the auto registration has on a text based upgrade and and a GUI based fresh installation. Some example of the regadm command and the related service can be found at the end.

Upgrade with Text Installer

The first thing I was was a text based upgrade of an existing vanilla installation of Solaris 10 on x64. The first change it that the installer asks you to to optionally register my support information. 

 I have chosen this option. The next thing it wants to know is  

 The next steps follow as usual. The installer performs a patch analysis.

It'll be able to remove 69 patches in my case and downgrade one 

 The patches in question are listed below




 Patch 121781 will get downgraded

Voila, my system got upgraded a good hour later.

GUI Installation

The next thing I tried was a fresh GUI based install. The invitation to use the auto registration looks as follows:

The same information is getting gathered as before.

A summary screen shows the data gathered:

The alternative is to to register anonymously. I left all fields blank. The summary looked in this case like:

regadm Command and autoreg Service

Once the system is up and running you'll find out that you got a new buddy the service autoreg will will call home to Oracle from time to time...

bash-3.00# svcs -l  svc:/application/autoreg:default
fmri         svc:/application/autoreg:default
name         Solaris Auto Registration
enabled      true
state        online
next_state   none
state_time   Sat Sep 11 12:40:23 2010
logfile      /var/svc/log/application-autoreg:default.log
restarter    svc:/system/svc/restarter:default
dependency   require_all/none svc:/system/filesystem/local:default (online)
dependency   require_all/none svc:/network/service (online)
dependency   require_all/none svc:/milestone/name-services (online)
dependency   require_all/none svc:/milestone/multi-user-server (online)
dependency   optional_all/none svc:/application/stosreg (online)

The registration can then be managed through the new regadm command

An anonymous registration looks as follows:

bash-3.00# regadm register
Registering with My Oracle Support using username     Registered Solaris 10 Operating System    Registered StarOffice 8 Office Suite Update 11    Registered StarOffice 8 Office Suite Update 11 Registration successful

The registration service can be enable, disabled and checked thorigh the regadm command as well.

bash-3.00# regadm status
Solaris Auto-Registration is currently online
bash-3.00# regadm disable
bash-3.00# regadm status
Solaris Auto-Registration is currently disabled
bash-3.00# regadm enable
bash-3.00# regadm status
Solaris Auto-Registration is currently online

More information can be found in the Oracle online documentation.