![]() |
|
|||
0001 /* SPDX-License-Identifier: GPL-2.0 */ 0002 /* 0003 * This program is free software; you can redistribute it and/or modify 0004 * it under the terms of the GNU General Public License as published by 0005 * the Free Software Foundation; either version 2 of the License, or 0006 * (at your option) any later version. 0007 * 0008 * This program is distributed in the hope that it will be useful, 0009 * but WITHOUT ANY WARRANTY; without even the implied warranty of 0010 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 0011 * GNU General Public License for more details. 0012 * 0013 * Authors: Waiman Long <longman@redhat.com> 0014 */ 0015 0016 #ifndef LOCK_EVENT 0017 #define LOCK_EVENT(name) LOCKEVENT_ ## name, 0018 #endif 0019 0020 #ifdef CONFIG_QUEUED_SPINLOCKS 0021 #ifdef CONFIG_PARAVIRT_SPINLOCKS 0022 /* 0023 * Locking events for PV qspinlock. 0024 */ 0025 LOCK_EVENT(pv_hash_hops) /* Average # of hops per hashing operation */ 0026 LOCK_EVENT(pv_kick_unlock) /* # of vCPU kicks issued at unlock time */ 0027 LOCK_EVENT(pv_kick_wake) /* # of vCPU kicks for pv_latency_wake */ 0028 LOCK_EVENT(pv_latency_kick) /* Average latency (ns) of vCPU kick */ 0029 LOCK_EVENT(pv_latency_wake) /* Average latency (ns) of kick-to-wakeup */ 0030 LOCK_EVENT(pv_lock_stealing) /* # of lock stealing operations */ 0031 LOCK_EVENT(pv_spurious_wakeup) /* # of spurious wakeups in non-head vCPUs */ 0032 LOCK_EVENT(pv_wait_again) /* # of wait's after queue head vCPU kick */ 0033 LOCK_EVENT(pv_wait_early) /* # of early vCPU wait's */ 0034 LOCK_EVENT(pv_wait_head) /* # of vCPU wait's at the queue head */ 0035 LOCK_EVENT(pv_wait_node) /* # of vCPU wait's at non-head queue node */ 0036 #endif /* CONFIG_PARAVIRT_SPINLOCKS */ 0037 0038 /* 0039 * Locking events for qspinlock 0040 * 0041 * Subtracting lock_use_node[234] from lock_slowpath will give you 0042 * lock_use_node1. 0043 */ 0044 LOCK_EVENT(lock_pending) /* # of locking ops via pending code */ 0045 LOCK_EVENT(lock_slowpath) /* # of locking ops via MCS lock queue */ 0046 LOCK_EVENT(lock_use_node2) /* # of locking ops that use 2nd percpu node */ 0047 LOCK_EVENT(lock_use_node3) /* # of locking ops that use 3rd percpu node */ 0048 LOCK_EVENT(lock_use_node4) /* # of locking ops that use 4th percpu node */ 0049 LOCK_EVENT(lock_no_node) /* # of locking ops w/o using percpu node */ 0050 #endif /* CONFIG_QUEUED_SPINLOCKS */ 0051 0052 /* 0053 * Locking events for rwsem 0054 */ 0055 LOCK_EVENT(rwsem_sleep_reader) /* # of reader sleeps */ 0056 LOCK_EVENT(rwsem_sleep_writer) /* # of writer sleeps */ 0057 LOCK_EVENT(rwsem_wake_reader) /* # of reader wakeups */ 0058 LOCK_EVENT(rwsem_wake_writer) /* # of writer wakeups */ 0059 LOCK_EVENT(rwsem_opt_lock) /* # of opt-acquired write locks */ 0060 LOCK_EVENT(rwsem_opt_fail) /* # of failed optspins */ 0061 LOCK_EVENT(rwsem_opt_nospin) /* # of disabled optspins */ 0062 LOCK_EVENT(rwsem_rlock) /* # of read locks acquired */ 0063 LOCK_EVENT(rwsem_rlock_steal) /* # of read locks by lock stealing */ 0064 LOCK_EVENT(rwsem_rlock_fast) /* # of fast read locks acquired */ 0065 LOCK_EVENT(rwsem_rlock_fail) /* # of failed read lock acquisitions */ 0066 LOCK_EVENT(rwsem_rlock_handoff) /* # of read lock handoffs */ 0067 LOCK_EVENT(rwsem_wlock) /* # of write locks acquired */ 0068 LOCK_EVENT(rwsem_wlock_fail) /* # of failed write lock acquisitions */ 0069 LOCK_EVENT(rwsem_wlock_handoff) /* # of write lock handoffs */
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.1.0 LXR engine. The LXR team |
![]() ![]() |