user warning: Duplicate entry '827686' for key 1
query: INSERT INTO dr_accesslog (title, path, url, hostname, uid, sid, timer, timestamp) values('Grabbing the value of a local variable with DTrace', 'node/122', '', '38.107.191.88', 0, '5k2784karsc2jqecgmhovpj8g4', 288, 1268358281) in /usr/local/apache/htdocs/includes/database.mysql.inc on line 172.
Maurice Wilkes, an early computer science pioneer that invented macros and libraries, stated in 1949: "As soon as we started programming, we found to our surprise that it wasn't as easy to get programs right as we had thought. Debugging had to be discovered.
In the mid-80s after leaving a team at AT&T Bell Labs working on the design and implementation of a modern Mach like operating system, I made a minor career change from software engineer to trainer. I created Digital Equipment Corporation's first UNIX class and later taught many VMS folks UNIX/Shell scripting/C programming classes for about 8 years.
Two computer performance metrics that you try to tune for are throughput and/or latency. What do these terms mean? I come from a training background and whenever possible try to use a good analogy to describe terms that can sometimes get very detailed and technical in nature.
DTrace can be used to find the root cause of a BAD TRAP Solaris 10 system crash. Most BAD TRAP panics are caused by one kernel module clobbering kernel memory containing a pointer. When this now bad pointer gets used later, the result is a BAD TRAP kernel panic. One possible way to find the root cause of this type of system crash is to turn on kernel memory auditing through the kmem_flags kernel tunable. Common memory access bugs that can be detected with these flags are:
I will demonstrate the power of mdb(1) by displaying kernel data structures related to virtual memory (VM) in order to show how to dump the contents of any running application's memory or any page of memory in general. As an example I will run a simple shell script that I will end up locating in the shell's heap. When I first figured out this example, it was an educated guess on my part that a shell script would end up in the heap of the shell interpreter. The file name of an interpreter script (files starting with #!) gets passed to the invoked interpreter as one of its arguments.
Virtualization is the big buzz word these days. I would like to describe one of the older virtualization techniques around: Virtual Memory (VM) on Solaris 10. Every 32-bit application, command, utility (e.g. ls, vi, fmd, acroread, oracle process, etc) is given 2 to the 32 = 4Gb of virtual memory to potentially use. 64-bit applications are given 16 Exabytes of virtual memory which is 4 billion times more than 32-bit programs.
Ijoined Forsythe to be able to work closely with a person whose name kept popping up every time I taught a DTrace class for SunEd. A customer in the class would say oh yea Jarod Jenson was here last week or last month and he solved our performance problem in less than a day. I wrote the DTrace course (SA-327-S10) for Sun Educational Services starting in March of 2004 and then taught it for 3 plus years (as well as Solaris 10 Internals, Multi-threaded Programming and Crash Dump Analysis) before joining Forsythe.