1 #!/usr/sbin/dtrace -s 2 /* 3 * threaded.d - sample multi-threaded CPU usage. 4 * Written using DTrace (Solaris 10 3/05). 5 * 6 * This measures thread IDs as a process runs across multiple CPUs. 7 * It is a simple script that can help determine if a multi-threaded 8 * application is effectively using it's threads, or if the threads have 9 * serialised. See the example file in Docs/Examples/threaded_example.txt 10 * for a demonstration. 11 * 12 * $Id: threaded.d,v 1.1.1.1 2015/09/30 22:01:09 christos Exp $ 13 * 14 * USAGE: threaded.d 15 * 16 * FIELDS: 17 * PID process ID 18 * CMD process name 19 * value thread ID 20 * count number of samples 21 * 22 * SEE ALSO: prstat -L 23 * 24 * COPYRIGHT: Copyright (c) 2005 Brendan Gregg. 25 * 26 * CDDL HEADER START 27 * 28 * The contents of this file are subject to the terms of the 29 * Common Development and Distribution License, Version 1.0 only 30 * (the "License"). You may not use this file except in compliance 31 * with the License. 32 * 33 * You can obtain a copy of the license at Docs/cddl1.txt 34 * or http://www.opensolaris.org/os/licensing. 35 * See the License for the specific language governing permissions 36 * and limitations under the License. 37 * 38 * CDDL HEADER END 39 * 40 * Author: Brendan Gregg [Sydney, Australia] 41 * 42 * 25-Jul-2005 Brendan Gregg Created this. 43 * 25-Jul-2005 " " Last update. 44 */ 45 46 #pragma D option quiet 47 48 /* 49 * Sample at 100 Hertz 50 */ 51 profile:::profile-100 52 /pid != 0/ 53 { 54 @sample[pid, execname] = lquantize(tid, 0, 128, 1); 55 } 56 57 /* 58 * Print output every 1 second 59 */ 60 profile:::tick-1sec 61 { 62 printf("%Y,\n", walltimestamp); 63 printa("\n PID: %-8d CMD: %s\n%@d", @sample); 64 printf("\n"); 65 trunc(@sample); 66 } 67