~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/translations/it_IT/locking/lockstat.rst

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 .. SPDX-License-Identifier: GPL-2.0
  2 
  3 .. include:: ../disclaimer-ita.rst
  4 
  5 =======================
  6 Statistiche sui blocchi
  7 =======================
  8 
  9 Cosa
 10 ====
 11 
 12 Come suggerisce il nome, fornisce statistiche sui blocchi.
 13 
 14 
 15 Perché
 16 ======
 17 
 18 Perché, tanto per fare un esempio, le contese sui blocchi possono influenzare
 19 significativamente le prestazioni.
 20 
 21 Come
 22 ====
 23 
 24 *Lockdep* ha punti di collegamento nelle funzioni di blocco e inoltre
 25 mappa le istanze di blocco con le relative classi. Partiamo da questo punto
 26 (vedere Documentation/translations/it_IT/locking/lockdep-design.rst).
 27 Il grafico sottostante mostra la relazione che intercorre fra le
 28 funzioni di blocco e i vari punti di collegamenti che ci sono al loro
 29 interno::
 30 
 31         __acquire
 32             |
 33            lock _____
 34             |        \
 35             |    __contended
 36             |         |
 37             |       <wait>
 38             | _______/
 39             |/
 40             |
 41        __acquired
 42             |
 43             .
 44           <hold>
 45             .
 46             |
 47        __release
 48             |
 49          unlock
 50 
 51   lock, unlock  - le classiche funzioni di blocco
 52   __*           - i punti di collegamento
 53   <>            - stati
 54 
 55 Grazie a questi punti di collegamento possiamo fornire le seguenti statistiche:
 56 
 57 con-bounces
 58   - numero di contese su un blocco che riguarda dati di un processore
 59 
 60 contentions
 61   - numero di acquisizioni di blocchi che hanno dovuto attendere
 62 
 63 wait time
 64   min
 65     - tempo minimo (diverso da zero) che sia mai stato speso in attesa di
 66       un blocco
 67 
 68   max
 69     - tempo massimo che sia mai stato speso in attesa di un blocco
 70 
 71   total
 72     - tempo totale speso in attesa di un blocco
 73 
 74   avg
 75         - tempo medio speso in attesa di un blocco
 76 
 77 acq-bounces
 78   - numero di acquisizioni di blocco che riguardavano i dati su un processore
 79 
 80 acquisitions
 81   - numero di volte che un blocco è stato ottenuto
 82 
 83 hold time
 84   min
 85     - tempo minimo (diverso da zero) che sia mai stato speso trattenendo un blocco
 86 
 87   max
 88     - tempo massimo che sia mai stato speso trattenendo un blocco
 89 
 90   total
 91     - tempo totale di trattenimento di un blocco
 92 
 93   avg
 94     - tempo medio di trattenimento di un blocco
 95 
 96 Questi numeri vengono raccolti per classe di blocco, e per ogni stato di
 97 lettura/scrittura (quando applicabile).
 98 
 99 Inoltre, questa raccolta di statistiche tiene traccia di 4 punti di contesa
100 per classe di blocco. Un punto di contesa è una chiamata che ha dovuto
101 aspettare l'acquisizione di un blocco.
102 
103 Configurazione
104 --------------
105 
106 Le statistiche sui blocchi si abilitano usando l'opzione di configurazione
107 CONFIG_LOCK_STAT.
108 
109 Uso
110 ---
111 
112 Abilitare la raccolta di statistiche::
113 
114         # echo 1 >/proc/sys/kernel/lock_stat
115 
116 Disabilitare la raccolta di statistiche::
117 
118         # echo 0 >/proc/sys/kernel/lock_stat
119 
120 Per vedere le statistiche correnti sui blocchi::
121 
122   ( i numeri di riga non fanno parte dell'output del comando, ma sono stati
123   aggiunti ai fini di questa spiegazione )
124 
125   # less /proc/lock_stat
126 
127   01 lock_stat version 0.4
128   02-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
129   03                              class name    con-bounces    contentions   waittime-min   waittime-max waittime-total   waittime-avg    acq-bounces   acquisitions   holdtime-min   holdtime-max holdtime-total   holdtime-avg
130   04-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
131   05
132   06                         &mm->mmap_sem-W:            46             84           0.26         939.10       16371.53         194.90          47291        2922365           0.16     2220301.69 17464026916.32        5975.99
133   07                         &mm->mmap_sem-R:            37            100           1.31      299502.61      325629.52        3256.30         212344       34316685           0.10        7744.91    95016910.20           2.77
134   08                         ---------------
135   09                           &mm->mmap_sem              1          [<ffffffff811502a7>] khugepaged_scan_mm_slot+0x57/0x280
136   10                           &mm->mmap_sem             96          [<ffffffff815351c4>] __do_page_fault+0x1d4/0x510
137   11                           &mm->mmap_sem             34          [<ffffffff81113d77>] vm_mmap_pgoff+0x87/0xd0
138   12                           &mm->mmap_sem             17          [<ffffffff81127e71>] vm_munmap+0x41/0x80
139   13                         ---------------
140   14                           &mm->mmap_sem              1          [<ffffffff81046fda>] dup_mmap+0x2a/0x3f0
141   15                           &mm->mmap_sem             60          [<ffffffff81129e29>] SyS_mprotect+0xe9/0x250
142   16                           &mm->mmap_sem             41          [<ffffffff815351c4>] __do_page_fault+0x1d4/0x510
143   17                           &mm->mmap_sem             68          [<ffffffff81113d77>] vm_mmap_pgoff+0x87/0xd0
144   18
145   19.............................................................................................................................................................................................................................
146   20
147   21                         unix_table_lock:           110            112           0.21          49.24         163.91           1.46          21094          66312           0.12         624.42       31589.81           0.48
148   22                         ---------------
149   23                         unix_table_lock             45          [<ffffffff8150ad8e>] unix_create1+0x16e/0x1b0
150   24                         unix_table_lock             47          [<ffffffff8150b111>] unix_release_sock+0x31/0x250
151   25                         unix_table_lock             15          [<ffffffff8150ca37>] unix_find_other+0x117/0x230
152   26                         unix_table_lock              5          [<ffffffff8150a09f>] unix_autobind+0x11f/0x1b0
153   27                         ---------------
154   28                         unix_table_lock             39          [<ffffffff8150b111>] unix_release_sock+0x31/0x250
155   29                         unix_table_lock             49          [<ffffffff8150ad8e>] unix_create1+0x16e/0x1b0
156   30                         unix_table_lock             20          [<ffffffff8150ca37>] unix_find_other+0x117/0x230
157   31                         unix_table_lock              4          [<ffffffff8150a09f>] unix_autobind+0x11f/0x1b0
158 
159 Questo estratto mostra le statistiche delle prime due classi di
160 blocco. La riga 01 mostra la versione dell'output - la versione
161 cambierà ogni volta che cambia il formato. Le righe dalla 02 alla 04
162 rappresentano l'intestazione con la descrizione delle colonne. Le
163 statistiche sono mostrate nelle righe dalla 05 alla 18 e dalla 20
164 alla 31. Queste statistiche sono divise in due parti: le statistiche,
165 seguite dai punti di contesa (righe 08 e 13) separati da un divisore.
166 
167 Le righe dalla 09 alla 12 mostrano i primi quattro punti di contesa
168 registrati (il codice che tenta di acquisire un blocco) e le righe
169 dalla 14 alla 17 mostrano i primi quattro punti contesi registrati
170 (ovvero codice che ha acquisito un blocco). È possibile che nelle
171 statistiche manchi il valore *max con-bounces*.
172 
173 Il primo blocco (righe dalla 05 alla 18) è di tipo lettura/scrittura e quindi
174 mostra due righe prima del divisore. I punti di contesa non corrispondono alla
175 descrizione delle colonne nell'intestazione; essi hanno due colonne: *punti di
176 contesa* e *[<IP>] simboli*. Il secondo gruppo di punti di contesa sono i punti
177 con cui si contende il blocco.
178 
179 La parte interna del tempo è espressa in us (microsecondi).
180 
181 Quando si ha a che fare con blocchi annidati si potrebbero vedere le
182 sottoclassi di blocco::
183 
184   32...........................................................................................................................................................................................................................
185   33
186   34                               &rq->lock:       13128          13128           0.43         190.53      103881.26           7.91          97454        3453404           0.00         401.11    13224683.11           3.82
187   35                               ---------
188   36                               &rq->lock          645          [<ffffffff8103bfc4>] task_rq_lock+0x43/0x75
189   37                               &rq->lock          297          [<ffffffff8104ba65>] try_to_wake_up+0x127/0x25a
190   38                               &rq->lock          360          [<ffffffff8103c4c5>] select_task_rq_fair+0x1f0/0x74a
191   39                               &rq->lock          428          [<ffffffff81045f98>] scheduler_tick+0x46/0x1fb
192   40                               ---------
193   41                               &rq->lock           77          [<ffffffff8103bfc4>] task_rq_lock+0x43/0x75
194   42                               &rq->lock          174          [<ffffffff8104ba65>] try_to_wake_up+0x127/0x25a
195   43                               &rq->lock         4715          [<ffffffff8103ed4b>] double_rq_lock+0x42/0x54
196   44                               &rq->lock          893          [<ffffffff81340524>] schedule+0x157/0x7b8
197   45
198   46...........................................................................................................................................................................................................................
199   47
200   48                             &rq->lock/1:        1526          11488           0.33         388.73      136294.31          11.86          21461          38404           0.00          37.93      109388.53           2.84
201   49                             -----------
202   50                             &rq->lock/1        11526          [<ffffffff8103ed58>] double_rq_lock+0x4f/0x54
203   51                             -----------
204   52                             &rq->lock/1         5645          [<ffffffff8103ed4b>] double_rq_lock+0x42/0x54
205   53                             &rq->lock/1         1224          [<ffffffff81340524>] schedule+0x157/0x7b8
206   54                             &rq->lock/1         4336          [<ffffffff8103ed58>] double_rq_lock+0x4f/0x54
207   55                             &rq->lock/1          181          [<ffffffff8104ba65>] try_to_wake_up+0x127/0x25a
208 
209 La riga 48 mostra le statistiche per la seconda sottoclasse (/1) della
210 classe *&irq->lock* (le sottoclassi partono da 0); in questo caso,
211 come suggerito dalla riga 50, ``double_rq_lock`` tenta di acquisire un blocco
212 annidato di due spinlock.
213 
214 Per vedere i blocco più contesi::
215 
216   # grep : /proc/lock_stat | head
217                         clockevents_lock:       2926159        2947636           0.15       46882.81  1784540466.34         605.41        3381345        3879161           0.00        2260.97    53178395.68          13.71
218                      tick_broadcast_lock:        346460         346717           0.18        2257.43    39364622.71         113.54        3642919        4242696           0.00        2263.79    49173646.60          11.59
219                   &mapping->i_mmap_mutex:        203896         203899           3.36      645530.05 31767507988.39      155800.21        3361776        8893984           0.17        2254.15    14110121.02           1.59
220                                &rq->lock:        135014         136909           0.18         606.09      842160.68           6.15        1540728       10436146           0.00         728.72    17606683.41           1.69
221                &(&zone->lru_lock)->rlock:         93000          94934           0.16          59.18      188253.78           1.98        1199912        3809894           0.15         391.40     3559518.81           0.93
222                          tasklist_lock-W:         40667          41130           0.23        1189.42      428980.51          10.43         270278         510106           0.16         653.51     3939674.91           7.72
223                          tasklist_lock-R:         21298          21305           0.20        1310.05      215511.12          10.12         186204         241258           0.14        1162.33     1179779.23           4.89
224                               rcu_node_1:         47656          49022           0.16         635.41      193616.41           3.95         844888        1865423           0.00         764.26     1656226.96           0.89
225        &(&dentry->d_lockref.lock)->rlock:         39791          40179           0.15        1302.08       88851.96           2.21        2790851       12527025           0.10        1910.75     3379714.27           0.27
226                               rcu_node_0:         29203          30064           0.16         786.55     1555573.00          51.74          88963         244254           0.00         398.87      428872.51           1.76
227 
228 Per cancellare le statistiche::
229 
230   # echo 0 > /proc/lock_stat

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php