#
259065 |
|
07-Dec-2013 |
gjb |
- Copy stable/10 (r259064) to releng/10.0 as part of the 10.0-RELEASE cycle. - Update __FreeBSD_version [1] - Set branch name to -RC1
[1] 10.0-CURRENT __FreeBSD_version value ended at '55', so start releng/10.0 at '100' so the branch is started with a value ending in zero.
Approved by: re (implicit) Sponsored by: The FreeBSD Foundation |
#
256281 |
|
10-Oct-2013 |
gjb |
Copy head (r256279) to stable/10 as part of the 10.0-RELEASE cycle.
Approved by: re (implicit) Sponsored by: The FreeBSD Foundation
|
#
244445 |
|
19-Dec-2012 |
jeff |
- Add new machine parsable KTR macros for timing events. - Use this new format to automatically handle syscalls and VOPs. This changes the earlier format but is still human readable.
Sponsored by: EMC / Isilon Storage Division
|
#
243046 |
|
14-Nov-2012 |
jeff |
- Implement run-time expansion of the KTR buffer via sysctl. - Implement a function to ensure that all preempted threads have switched back out at least once. Use this to make sure there are no stale references to the old ktr_buf or the lock profiling buffers before updating them.
Reviewed by: marius (sparc64 parts), attilio (earlier patch) Sponsored by: EMC / Isilon Storage Division
|
#
222813 |
|
07-Jun-2011 |
attilio |
etire the cpumask_t type and replace it with cpuset_t usage.
This is intended to fix the bug where cpu mask objects are capped to 32. MAXCPU, then, can now arbitrarely bumped to whatever value. Anyway, as long as several structures in the kernel are statically allocated and sized as MAXCPU, it is suggested to keep it as low as possible for the time being.
Technical notes on this commit itself: - More functions to handle with cpuset_t objects are introduced. The most notable are cpusetobj_ffs() (which calculates a ffs(3) for a cpuset_t object), cpusetobj_strprint() (which prepares a string representing a cpuset_t object) and cpusetobj_strscan() (which creates a valid cpuset_t starting from a string representation). - pc_cpumask and pc_other_cpus are target to be removed soon. With the moving from cpumask_t to cpuset_t they are now inefficient and not really useful. Anyway, for the time being, please note that access to pcpu datas is protected by sched_pin() in order to avoid migrating the CPU while reading more than one (possible) word - Please note that size of cpuset_t objects may differ between kernel and userland. While this is not directly related to the patch itself, it is good to understand that concept and possibly use the patch as a reference on how to deal with cpuset_t objects in userland, when accessing kernland members. - KTR_CPUMASK is changed and now is represented through a string, to be set as the example reported in NOTES.
Please additively note that no MAXCPU is bumped in this patch, but private testing has been done until to MAXCPU=128 on a real 8x8x2(htt) machine (amd64).
Please note that the FreeBSD version is not yet bumped because of the upcoming pcpu changes. However, note that this patch is not targeted for MFC.
People to thank for the time spent on this patch: - sbruno, pluknet and Nicholas Esborn (nick AT desert DOT net) tested several revision of the patches and really helped in improving stability of this work. - marius fixed several bugs in the sparc64 implementation and reviewed patches related to ktr. - jeff and jhb discussed the basic approach followed. - kib and marcel made targeted review on some specific part of the patch. - marius, art, nwhitehorn and andreast reviewed MD specific part of the patch. - marius, andreast, gonzo, nwhitehorn and jceel tested MD specific implementations of the patch. - Other people have made contributions on other patches that have been already committed and have been listed separately.
Companies that should be mentioned for having participated at several degrees: - Yahoo! for having offered the machines used for testing on big count of CPUs. - The FreeBSD Foundation for having sponsored my devsummit attendance, which has been instrumental. - Sandvine for having offered offices and infrastructure during development.
(I really hope I didn't forget anyone, if it happened I apologize in advance).
|
#
210443 |
|
24-Jul-2010 |
mav |
Remove extra commas from KTR_EVENT4() macro to match number of CTR6() args. Comparing to other macros there should be strings concatenation, not a separate arguments.
|
#
210334 |
|
21-Jul-2010 |
attilio |
KTR_CTx are long time aliased by existing classes so they can't serve their purpose anymore. Axe them out.
Sponsored by: Sandvine Incorporated Discussed with: jhb, emaste Possible MFC: TBD
|
#
194578 |
|
21-Jun-2009 |
rdivacky |
In non-debugging mode make this define (void)0 instead of nothing. This helps to catch bugs like the below with clang.
if (cond); <--- note the trailing ; something();
Approved by: ed (mentor) Discussed on: current@
|
#
191653 |
|
29-Apr-2009 |
bms |
Grab KTR_SPARE1 and KTR_SPARE5 for KTR_INET and KTR_INET6 respectively, as placeholder for future use of CTR() by the networking code (MLDv2 will be going in shortly). Mark KTR_SPARE* as being used in fact by cxgb (picked up on a 'make universe' run).
|
#
187357 |
|
17-Jan-2009 |
jeff |
- Implement generic macros for producing KTR records that are compatible with src/tools/sched/schedgraph.py. This allows developers to quickly create a graphical view of ktr data for any resource in the system. - Add sched_tdname() and the pcpu field 'name' for quickly and uniformly identifying records associated with a thread or cpu. - Reimplement the KTR_SCHED traces using the new generic facility.
Obtained from: attilio Discussed with: jhb Sponsored by: Nokia
|
#
154818 |
|
25-Jan-2006 |
jhb |
Axe KTR_ALQ_MASK now that KTR_WITNESS is off unless you hack an #ifdef in subr_witness.c. I did add a comment in subr_witness.c noting that KTR_WITNESS is incompatible with KTR_ALQ.
|
#
154790 |
|
24-Jan-2006 |
jhb |
- Add a new KTR_SUBSYS in place of KTR_SPARE1 to serve as a subsystem placeholder similar to KTR_DEV. Explain the use of KTR_DEV and KTR_SUBSYS in a comment as well. - Retire KTR_WITNESS and instead have KTR_WITNESS default to off but use KTR_SUBSYS if it is enabled.
|
#
153493 |
|
17-Dec-2005 |
njl |
Clean up unused or poorly utilized KTR values. Remove KTR_FS, KTR_KGDB, and KTR_IO as they were never used. Remove KTR_CLK since it was only used for hardclock firing and use KTR_INTR there instead. Remove KTR_CRITICAL since it was only used for crit enter/exit and use KTR_CONTENTION instead.
|
#
153174 |
|
06-Dec-2005 |
marius |
Extend the scope of #ifndef LOCORE to also cover the prototype of ktr_tracepoint() and the macros using it. This allows this header to be included in .S files for obtaining the KTR_* class macros directly and providing a default value for KTR_COMPILE in case it's not specified in the kernel config file including defining it to 0 when not using 'options KTR' at all.
Requested by: ru Reviewed by: ru
|
#
149734 |
|
02-Sep-2005 |
glebius |
Change default KTR_COMPILE from KTR_GEN to KTR_ALL, to match with manual page.
Reviewed by: jhb, pjd
|
#
147288 |
|
10-Jun-2005 |
jeff |
- Replace the unused KTR_NFS with KTR_VFS. KTR_VFS differs from KTR_VOP in that KTR_VFS will be hand placed, while KTR_VOP traces the individual vnode operations and is generated by vnode_if.awk. - Add a comment describing KTR_VOP.
|
#
147279 |
|
10-Jun-2005 |
jeff |
- I broke binary compat. update KTR_VERSION.
Spotted by: jhb
|
#
147278 |
|
10-Jun-2005 |
jeff |
- Add curthread to the state that ktr is saving. The extra information is well worth the bloat. - Change the formatting of 'show ktr' slightly to accommodate the additional field. Remove a tab from the verbose output and place the actual trace data after a : so it is more easy to understand which part is the event and which is part of the record.
|
#
143140 |
|
04-Mar-2005 |
joerg |
Addendum to netchild's C compiler abstraction mega-patch which somehow have been forgotten in my previous commit.
Submitted by: netchild
|
#
140726 |
|
24-Jan-2005 |
jeff |
- Somehow I mangled KTR_CRITICAL.
Spotted by: ru
|
#
140696 |
|
24-Jan-2005 |
jeff |
- Add a new KTR class for the buffer cache.
|
#
139314 |
|
25-Dec-2004 |
jeff |
- Add KTR_SCHED to produce ktr data for sys/tools/sched/schedgraph.py.
|
#
137364 |
|
07-Nov-2004 |
rwatson |
Add basic critical section tracing to KTR using event type KTR_CRITICAL. This generates a KTR event for each critical section entered and exited.
It would be desirable to also log the filename and line number of the source entering or exiting the critical section, but this requires hacking up the critical section API, so I've not done that yet.
|
#
136805 |
|
23-Oct-2004 |
rwatson |
Add some basic KTR tracing to busdma on i386. This is likely not the final set of traces -- someone with more busdma background will probably want to review and expand this, as well as port to other platforms. This tracing is sufficient to identify key busdma events on i386, and in particular to draw attention to bounce buffering events that may have a substantial performance impact.
|
#
136755 |
|
21-Oct-2004 |
rwatson |
Add KTR_GEOM, which allows tracing of basic GEOM I/O events occuring in the g_up and g_down threads. Each time a bio is propelled up and down the stack, an event is generating showing the provider, offset, and length, as well as thread wakeup and work status information.
|
#
133228 |
|
06-Aug-2004 |
rwatson |
Assign KTR flag constants for UMA events and callouts.
|
#
112109 |
|
11-Mar-2003 |
jhb |
Retire the KTR_LOCKMGR bit and use it to log eventhandler messages instead as KTR_EVH.
|
#
103787 |
|
22-Sep-2002 |
jeff |
- Add support for logging KTR via ALQ. This is optional and enabled by the KTR_ALQ config option.
|
#
102450 |
|
26-Aug-2002 |
iedowse |
Add a new KTR type KTR_CONTENTION, and use it in the mutex code to log the start and end of periods during which mtx_lock() is waiting to acquire a sleep mutex. The log message includes the file and line of both the waiter and the holder.
Reviewed by: jhb, jake
|
#
98652 |
|
22-Jun-2002 |
jake |
KTR_CT* had one too many trailing zeroes, making KTR_CT5-8 too large for ktr_mask.
|
#
93573 |
|
01-Apr-2002 |
jhb |
Wrap the arguments to CTR6() in parentheses so that the u_long casts work properly for arguments that are expressions.
|
#
93503 |
|
01-Apr-2002 |
jake |
ktr changes to improve performance and make writing a userland utility to dump the trace buffer feasible. - Remove KTR_EXTEND. This changes the format of the trace entries when activated, making writing a userland tool which is not tied to a specific kernel configuration difficult. - Use get_cyclecount() for timestamps. nanotime() is much too heavy weight and requires recursion protection due to ktr traces occuring as a result of ktr traces. KTR_VERBOSE may still require recursion protection, which is now conditional on it. - Allow KTR_CPU to be overridden by MD code. This is so that it is possible to trace early in startup before pcpu and/or curthread are setup. - Add a version number for the ktr interface. A userland tool can check this to detect mismatches. - Use an array for the parameters to make decoding in userland easier. - Add file and line recording to the non-extended traces now that the extended version is no more.
These changes will break gdb macros to decode the extended version of the trace buffer which are floating around. Users of these macros should either use the show ktr command in ddb, or use the userland utility which can be run on a core dump.
Approved by: jhb Tested on: i386, sparc64
|
#
87957 |
|
14-Dec-2001 |
jhb |
Fix two typos, TR6() and ITR6() need to use CTR6(), not CTR5().
|
#
87621 |
|
10-Dec-2001 |
obrien |
Complete the CTR6 addition (and TR6 and ITR6...)
|
#
87592 |
|
10-Dec-2001 |
obrien |
Add a CTR6, we need it now.
|
#
84978 |
|
15-Oct-2001 |
benno |
Add a hack to get around the fact that egcs 1.1.2 (which I'm using to build my powerpc kernels on NetBSD/macppc 1.5) doesn't know of the __func__ macro.
|
#
78784 |
|
25-Jun-2001 |
jhb |
- Replace the unused KTR_IDLELOOP trace class with a new KTR_WITNESS trace class to trace witness events. - Make the ktr_cpu field of ktr_entry be a standard field rather than one present only in the KTR_EXTEND case. - Move the default definition of KTR_ENTRIES from sys/ktr.h to kern/kern_ktr.c. It has not been needed in the header file since KTR was un-inlined. - Minor include cleanup in kern/kern_ktr.c. - Fiddle with the ktr_cpumask in ktr_tracepoint() to disable KTR events on the current CPU while we are processing an event. - Set the current CPU inside of the critical section to ensure we don't migrate CPU's after the critical section but before we set the CPU.
|
#
77712 |
|
04-Jun-2001 |
jhb |
Add a new psuedo-KTR trace level KTR_ALL which is a mask of all currently used KTR levels.
|
#
72761 |
|
20-Feb-2001 |
jhb |
- In the KTR_EXTEND case, use a const char * to point to the passed in filename insteada of copying the first 32 characters of it. - Add in const modifiers for the passed in format strings and filenames and their respective members in the ktr_entry struct.
|
#
72756 |
|
20-Feb-2001 |
jhb |
- Axe unused macros used by BSD/OS in assembly for KTR tracing. - Add a __printflike() tag to ktr_tracepoint() in the KTR_EXTEND case to verify the arguments passed to KTR tracepoints.
|
#
72376 |
|
11-Feb-2001 |
jake |
Implement a unified run queue and adjust priority levels accordingly.
- All processes go into the same array of queues, with different scheduling classes using different portions of the array. This allows user processes to have their priorities propogated up into interrupt thread range if need be. - I chose 64 run queues as an arbitrary number that is greater than 32. We used to have 4 separate arrays of 32 queues each, so this may not be optimal. The new run queue code was written with this in mind; changing the number of run queues only requires changing constants in runq.h and adjusting the priority levels. - The new run queue code takes the run queue as a parameter. This is intended to be used to create per-cpu run queues. Implement wrappers for compatibility with the old interface which pass in the global run queue structure. - Group the priority level, user priority, native priority (before propogation) and the scheduling class into a struct priority. - Change any hard coded priority levels that I found to use symbolic constants (TTIPRI and TTOPRI). - Remove the curpriority global variable and use that of curproc. This was used to detect when a process' priority had lowered and it should yield. We now effectively yield on every interrupt. - Activate propogate_priority(). It should now have the desired effect without needing to also propogate the scheduling class. - Temporarily comment out the call to vm_page_zero_idle() in the idle loop. It interfered with propogate_priority() because the idle process needed to do a non-blocking acquire of Giant and then other processes would try to propogate their priority onto it. The idle process should not do anything except idle. vm_page_zero_idle() will return in the form of an idle priority kernel thread which is woken up at apprioriate times by the vm system. - Update struct kinfo_proc to the new priority interface. Deliberately change its size by adjusting the spare fields. It remained the same size, but the layout has changed, so userland processes that use it would parse the data incorrectly. The size constraint should really be changed to an arbitrary version number. Also add a debug.sizeof sysctl node for struct kinfo_proc.
|
#
68420 |
|
06-Nov-2000 |
jhb |
- Remove much of the inlining of the KTR tracepoints into a ktr_tracepoint() function declared in kern_ktr.c. The only inline checks left are the checks that compare KTR_COMPILE with the supplied mask and thus should be optimized away into either nothing or a direct call to ktr_tracepoint(). - Move several KTR-related options to opt_ktr.h now that they are only needed by kern_ktr.c and not by ktr.h. - Add in the ktr_verbose functionality if KTR_EXTEND is turned on. If the global variable 'ktr_verbose' is non-zero, then KTR messages will be dumped to the console. This variable can be set by either kernel code or via the 'debug.ktr_verbose' sysctl. It defaults to off unless the KTR_VERBOSE kernel option is specified in which case it defaults to on. This can be useful when the machine locks up spinning in a loop with interrupts disabled as you might be able to see what it is doing when it locks up.
Requested by: phk
|
#
68004 |
|
30-Oct-2000 |
phk |
Remove an evil conditional nested include of <sys/systm.h>
|
#
66615 |
|
03-Oct-2000 |
jasone |
Convert lockmgr locks from using simple locks to using mutexes.
Add lockdestroy() and appropriate invocations, which corresponds to lockinit() and must be called to clean up after a lockmgr lock is no longer needed.
|
#
65836 |
|
14-Sep-2000 |
dfr |
Change "KTR_COMPILE & m" to "KTR_COMPILE & (m)" to allow more flexible expressions for m.
|
#
65694 |
|
10-Sep-2000 |
dfr |
Use '&' instead of '%' to calculate the new value for ktr_idx.
|
#
65556 |
|
06-Sep-2000 |
jasone |
Add KTR, a facility that logs kernel events in order to to facilitate debugging.
Acquired from: BSDi (BSD/OS) Submitted by: dfr, grog, jake, jhb
|