blob: 45e7485e7f71540fa51761dcdea30c5f6226955a [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001SYNOPSIS
2 #include <driver_info.h>
3
4 mixed driver_info(int what)
5
6DESCRIPTION
7 Returns some internal information about the driver.
8 The argument <what> determines which information is returned.
9
10 It can be either a configuration option as given to
11 configure_driver() or one of the following options:
12
13
14
15 Driver Environment:
16
17 <what> == DI_BOOT_TIME:
18 The time() when the driver was started.
19
20
21
22 LPC Runtime status:
23
24 <what> == DI_CURRENT_RUNTIME_LIMITS:
25 Return an array with the current runtime limits.
26 The entries in the returned array are:
27
28 int[LIMIT_EVAL]: the max number of eval costs
29 int[LIMIT_ARRAY]: the max number of array entries
30 int[LIMIT_MAPPING_SIZE]: the max number of mapping values
31 int[LIMIT_MAPPING_KEYS]: the max number of mapping entries
32 (LIMIT_MAPPING is an alias for LIMIT_MAPPING_KEYS)
33 int[LIMIT_BYTE]: the max number of bytes handled with
34 one read_bytes()/write_bytes() call.
35 int[LIMIT_FILE]: the max number of bytes handled with
36 one read_file()/write_file() call.
37 int[LIMIT_CALLOUTS]: the number of callouts at one time.
38 int[LIMIT_COST]: how to account the current cost.
39 int[LIMIT_MEMROY]: the max. number of bytes which can be
40 _additionally_ allocated/used
41 _per top-level execution thread_
42
43 For all limits except LIMIT_COST a limit of '0' aka LIMIT_UNLIMITED
44 means 'no limit'.
45
46 The value for LIMIT_COST has these meanings:
47
48 value > 0: the execution will cost minimum(<value>, actual cost) .
49 value = 0: if the current LIMIT_EVAL is larger than the calling
50 LIMIT_EVAL, the evaluation will cost only 10; otherwise
51 the full cost will be accounted.
52 value < 0: (-value)% of the current evaluation cost will be
53 accounted; -100 obviously means 'full cost'.
54
55 <what> == DI_EVAL_NUMBER:
56 Return the current evaluation number.
57 The number is incremented for each top-level call. Top-level
58 calls are initiated by the driver, usually in reaction to an
59 external event:
60 - commands (added by add_action)
61 - heart_beat, reset, clean_up
62 - calls from call_out or input_to
63 - master applies triggered by external events
64 - calls of driver hooks in reaction to external events
65 - send_erq callbacks
66 - logon in interactives
67
68 The number can be used to detect cases where the same code is
69 executed twice in the same top level evaluation (say, heart_beat),
70 and also for time stamps for ordering some events.
71
72 Please note that the counter may overflow, especially on 32 bit
73 systems. As a result, it can also be negative.
74
75
76
77 Network configuration:
78
79 <what> == DI_MUD_PORTS:
80 Returns an array with all open ports, which the driver
81 listens for player connections on.
82
83 <what> == DI_UDP_PORT:
84 Returns the port number of the UDP socket.
85
86
87
88 Memory management:
89
90 <what> == DI_MEMORY_RESERVE_USER:
91 Current size of the user memory reserve.
92 The user memory reserve is allocated at startup and is used
93 when the driver runs out of memory.
94
95 <what> == DI_MEMORY_RESERVE_MASTER:
96 Current size of the master memory reserve.
97 The master memory reserve is allocated at startup and is used
98 when the driver runs out of memory while executing master
99 code.
100
101 <what> == DI_MEMORY_RESERVE_SYSTEM:
102 Current size of the system memory reserve.
103 The system memory reserve is allocated at startup and is used
104 when the driver runs out of memory while executing internal
105 operations.
106
107
108
109 Traces:
110
111 <what> == DI_TRACE_CURRENT:
112 Returns the current stack trace in array form.
113
114 If the array has more than one entries, the first entry is 0 or
115 the name of the object with the heartbeat which started the
116 current thread; all following entries describe the call stack
117 starting with the topmost function called.
118
119 All call entries are arrays themselves with the following elements:
120
121 int[TRACE_TYPE]: The type of the call frame:
122 TRACE_TYPE_SYMBOL (0): a function symbol (shouldn't happen).
123 TRACE_TYPE_SEFUN (1): a simul-efun.
124 TRACE_TYPE_EFUN (2): an efun closure.
125 TRACE_TYPE_LAMBDA (3): a lambda closure.
126 TRACE_TYPE_LFUN (4): a normal lfun.
127
128 mixed[TRACE_NAME]: The 'name' of the called frame:
129 _TYPE_EFUN: either the name of the efun, or the code of
130 the instruction for operator closures
131 _TYPE_LAMBDA: the numeric lambda identifier.
132 _TYPE_LFUN: the name of the lfun.
133
134 string[TRACE_PROGRAM]: The (file)name of the program holding
135 the code.
136
137 string[TRACE_OBJECT]: The name of the object for which the code
Arathornf76eb122022-01-09 13:19:39 +0100138 was executed. For lightweight objects
139 this is 0.
140
MG Mud User88f12472016-06-24 23:31:02 +0200141 int[TRACE_LOC]:
142 _TYPE_LAMBDA: current program offset from the start of the
143 closure code.
144 _TYPE_LFUN: the line number.
145
146 <what> == DI_TRACE_CURRENT_DEPTH:
147 Return the current number of frames on the control stack
148 (recursion depth).
149
150 <what> == DI_TRACE_CURRENT_AS_STRING:
151 Returns the current stack trace as a string.
152
153 <what> == DI_TRACE_LAST_ERROR:
154 Returns the stack trace of the last error in array form
155 (same format as DI_TRACE_CURRENT). Stack traces of errors
156 before the last GC might not be available anymore.
157
158 <what> == DI_TRACE_LAST_ERROR_AS_STRING:
159 Returns the stack trace of the last error as a string.
160
161 <what> == DI_TRACE_LAST_UNCAUGHT_ERROR:
162 Returns the stack trace of the last uncaught error in array form
163 (same format as DI_TRACE_CURRENT). Stack traces of errors
164 before the last GC might not be available anymore.
165
166 <what> == DI_TRACE_LAST_UNCAUGHT_ERROR_AS_STRING:
167 Returns the stack trace of the last uncaught error as a string.
168
169
170
171 LPC Runtime statistics:
172
173 <what> == DI_NUM_FUNCTION_NAME_CALLS:
174 Number of function calls by name (like call_other).
175
176 <what> == DI_NUM_FUNCTION_NAME_CALL_HITS:
177 Function calls by name are cached (to accelerate
178 lookup of the corresponding program code).
179 This returns the number of cache hits.
180
181 <what> == DI_NUM_FUNCTION_NAME_CALL_MISSES:
182 The number of function call cache misses.
183
184 <what> == DI_NUM_OBJECTS_LAST_PROCESSED:
185 Number of listed objects processed in the last backend cycle.
186
187 <what> == DI_NUM_HEARTBEAT_TOTAL_CYCLES:
188 Total number of heart_beats cycles so far.
189
190 <what> == DI_NUM_HEARTBEAT_ACTIVE_CYCLES:
191 Number of active heart_beat cycles executed so far
192 (ie. cycles in which at least one heart_beat() function
193 was called).
194
195 <what> == DI_NUM_HEARTBEATS_LAST_PROCESSED:
196 Number of heart_beats calls in the last backend cycle
197
198 <what> == DI_NUM_STRING_TABLE_STRINGS_ADDED:
199 Number of distinct strings added to the string table so far.
200
201 <what> == DI_NUM_STRING_TABLE_STRINGS_REMOVED:
202 Number of distinct strings removed from the string table so far.
203
204 <what> == DI_NUM_STRING_TABLE_LOOKUPS_BY_VALUE:
205 Number of string searches by value.
206
207 <what> == DI_NUM_STRING_TABLE_LOOKUPS_BY_INDEX:
208 Number of string searches by address.
209
210 <what> == DI_NUM_STRING_TABLE_LOOKUP_STEPS_BY_VALUE:
211 Number of lookup steps needed for string searches by value.
212
213 <what> == DI_NUM_STRING_TABLE_LOOKUP_STEPS_BY_INDEX:
214 Number of lookup steps needed for string searches by address.
215
216 <what> == DI_NUM_STRING_TABLE_HITS_BY_VALUE:
217 Number of successful lookups of strings by value.
218
219 <what> == DI_NUM_STRING_TABLE_HITS_BY_INDEX:
220 Number of successful lookups of strings by address.
221
222 <what> == DI_NUM_STRING_TABLE_COLLISIONS:
223 Number of distinct strings added to an existing hash chain so far.
224
225 <what> == DI_NUM_REGEX_LOOKUPS:
226 Number of requests for new regexps.
227
228 <what> == DI_NUM_REGEX_LOOKUP_HITS:
229 Number of requested regexps found in the table.
230
231 <what> == DI_NUM_REGEX_LOOKUP_MISSES:
232 Number of requested regexps not found in the table.
233
234 <what> == DI_NUM_REGEX_LOOKUP_COLLISIONS:
235 Number of requested new regexps which collided with a cached one.
236
237
238
239 Network statistics:
240
241 <what> == DI_NUM_MESSAGES_OUT:
242 Number of messages sent to a player.
243
244 <what> == DI_NUM_PACKETS_OUT:
245 Number of packets sent to a player.
246
247 <what> == DI_NUM_PACKETS_IN:
248 Number of packets received from a player.
249
250 <what> == DI_SIZE_PACKETS_OUT:
251 Number of bytes sent to a player.
252
253 <what> == DI_SIZE_PACKETS_IN:
254 Number of bytes received from a player.
255
256
257
258 Load:
259
260 <what> == DI_LOAD_AVERAGE_COMMANDS:
261 A float value that shows the number of executed player commands
262 per second.
263
264 <what> == DI_LOAD_AVERAGE_LINES:
265 A float value that shows the number of compiled code lines
266 per second.
267
268 <what> == DI_LOAD_AVERAGE_PROCESSED_OBJECTS:
269 A float value that shows the average number of objects processed
270 each backend cycle.
271
272 <what> == DI_LOAD_AVERAGE_PROCESSED_OBJECTS_RELATIVE:
273 Average number of objects processed each cycle, expressed
274 as percentage (0..1.0) of the number of present objects.
275
276 <what> == DI_LOAD_AVERAGE_PROCESSED_HEARTBEATS_RELATIVE:
277 Average number of heart_beats called each cycle, expressed
278 as fraction (0..1.0) of the number of active heartbeats.
279
280
281
282 Memory use statistics:
283
284 <what> == DI_NUM_ACTIONS:
285 Number of allocated actions.
286
287 <what> == DI_NUM_CALLOUTS:
288 Number of pending call_outs.
289
290 <what> == DI_NUM_HEARTBEATS:
291 Number of objects with a heartbeat.
292
293 <what> == DI_NUM_SHADOWS:
294 Number of allocated shadows.
295
296 <what> == DI_NUM_OBJECTS:
297 Number of objects.
298
299 <what> == DI_NUM_OBJECTS_SWAPPED:
300 Number of objects that are swapped-out.
301
302 <what> == DI_NUM_OBJECTS_IN_LIST:
303 Number of objects in the object list
304 (i.e. not destructed objects).
305
306 <what> == DI_NUM_OBJECTS_IN_TABLE:
307 Number of objects in the object table.
308
309 <what> == DI_NUM_OBJECTS_DESTRUCTED:
310 Number of destructed, but still referenced objects.
311 (Not counting DI_NUM_OBJECTS_NEWLY_DESTRUCTED).
312
313 <what> == DI_NUM_OBJECTS_NEWLY_DESTRUCTED:
314 Number of newly destructed objects (ie. objects destructed
315 in this execution thread, that will really be destroyed in
316 the next backend cycle).
317
318 <what> == DI_NUM_OBJECT_TABLE_SLOTS:
319 Number of hash slots provided by the object table.
320
321 <what> == DI_NUM_PROGS:
322 Size occupied by the object table.
323
324 <what> == DI_NUM_PROGS_SWAPPED:
325 Number of swapped-out program blocks
326
327 <what> == DI_NUM_PROGS_UNSWAPPED:
328 Number of programs that were swapped-out, are now swapped-in,
329 but still have allocated space in the swap file.
330
331 <what> == DI_NUM_ARRAYS:
332 Number of currently existing arrays.
333
334 <what> == DI_NUM_MAPPINGS:
335 Number of currently existing mappings.
336
337 <what> == DI_NUM_MAPPINGS_CLEAN:
338 Number of clean mappings (mappings without a hash part).
339
340 <what> == DI_NUM_MAPPINGS_HASH:
341 Number of hash mappings.
342
343 <what> == DI_NUM_MAPPINGS_HYBRID:
344 Number of hybrid mappings (mappings that have a
345 condensed and hash part).
346
347 <what> == DI_NUM_STRUCTS:
348 Number of currently existing structs.
349
350 <what> == DI_NUM_STRUCT_TYPES:
351 Number of currently existing struct types.
352
353 <what> == DI_NUM_VIRTUAL_STRINGS:
354 Number of currently existing virtual strings
355 (identical strings are counted separately).
356
357 <what> == DI_NUM_STRINGS:
358 Number of real strings (identical strings
359 are counted once).
360
361 <what> == DI_NUM_STRINGS_TABLED:
362 Number of directly tabled strings.
363
364 <what> == DI_NUM_STRINGS_UNTABLED:
365 Number of untabled strings.
366
367 <what> == DI_NUM_STRING_TABLE_SLOTS:
368 Number of hash slots in the string table.
369
370 <what> == DI_NUM_STRING_TABLE_SLOTS_USED:
371 Number of hash chains in the string table.
372
373 <what> == DI_NUM_REGEX:
374 Number of cached regular expressions.
375
376 <what> == DI_NUM_REGEX_TABLE_SLOTS:
377 Number of slots in the regexp cache table.
378
Zesstra715ec202025-07-09 22:18:31 +0200379 <what> == DI_NUM_LVALUES:
Zesstraa812fe62017-06-18 15:31:06 +0200380 Number of lvalues (values referenced by &var).
381
Zesstra715ec202025-07-09 22:18:31 +0200382 <what> == DI_NUM_NAMED_OBJECT_TYPES:
383 Number of named object types.
384
385 <what> == DI_NUM_NAMED_OBJECT_TYPES_TABLE_SLOTS:
386 Number of table entries for named object types.
387
388 <what> == DI_NUM_COROUTINES:
389 Number of coroutines.
390
391 <what> == DI_NUM_LWOBJECTS:
392 Number of lightweight objects.
393
394 <what> == DI_NUM_LPC_PYTHON_REFS:
395 Number of references to Python objects from LPC.
396
397 <what> == DI_NUM_PYTHON_LPC_REFS:
398 Number of references to LPC values from Python.
399
MG Mud User88f12472016-06-24 23:31:02 +0200400 <what> == DI_SIZE_ACTIONS:
401 Total size of allocated actions.
402
403 <what> == DI_SIZE_CALLOUTS:
404 Total size of pending call_outs.
405
406 <what> == DI_SIZE_HEARTBEATS:
407 Total size of the heart_beat list.
408
409 <what> == DI_SIZE_SHADOWS:
410 Total size of allocated shadows.
411
412 <what> == DI_SIZE_OBJECTS:
413 Total size of objects (not counting the size of the values
414 of their variables).
415
416 <what> == DI_SIZE_OBJECTS_SWAPPED:
417 Total size of swapped-out variable blocks.
418
419 <what> == DI_SIZE_OBJECT_TABLE:
420 Size occupied by the object table.
421
422 <what> == DI_SIZE_PROGS:
423 Total size of all programs.
424
425 <what> == DI_SIZE_PROGS_SWAPPED:
426 Total size of swapped-out program blocks
427
428 <what> == DI_SIZE_PROGS_UNSWAPPED:
429 Total size of unswapped program blocks
430
431 <what> == DI_SIZE_ARRAYS:
432 Total size of all arrays (not counting additional sizes
433 of array element values).
434
435 <what> == DI_SIZE_MAPPINGS:
436 Total size of all mapping (not counting additional sizes
437 of contained values).
438
439 <what> == DI_SIZE_STRUCTS:
440 Total size of all structs (not counting additional sizes
441 of contained values).
442
443 <what> == DI_SIZE_STRUCT_TYPES:
444 Total size of all struct type definitions.
445
446 <what> == DI_SIZE_STRINGS:
447 Total size of all strings.
448
449 <what> == DI_SIZE_STRINGS_TABLED:
450 Total size of all tabled strings.
451
452 <what> == DI_SIZE_STRINGS_UNTABLED:
453 Total size of all untabled strings.
454
455 <what> == DI_SIZE_STRING_TABLE:
456 Size of the string table structure itself.
457
458 <what> == DI_SIZE_STRING_OVERHEAD:
459 Size of the overhead per string (compared to a raw string).
460
461 <what> == DI_SIZE_REGEX:
462 Total size of all cached regular expressions.
463
464 <what> == DI_SIZE_BUFFER_FILE:
465 The size of the memory buffer for file operations.
466
467 <what> == DI_SIZE_BUFFER_SWAP:
468 The size of the memory buffer for the swap file.
469
Zesstra715ec202025-07-09 22:18:31 +0200470 <what> == DI_SIZE_NAMED_OBJECT_TYPES_TABLE:
471 The size of the table for named object types.
472
473 <what> == DI_SIZE_LWOBJECTS:
474 The size of all lightweight objects (not counting the size
475 of the values of their variables).
476
477 <what> == DI_SIZE_COROUTINES
478 The size of all coroutines (not counting the size of any
479 values held by the coroutines).
480
MG Mud User88f12472016-06-24 23:31:02 +0200481
482
483 Memory swapper statistics:
484
485 <what> == DI_NUM_SWAP_BLOCKS:
486 Number of blocks in the swap file.
487
488 <what> == DI_NUM_SWAP_BLOCKS_FREE:
489 Number of free blocks in the swap file.
490
491 <what> == DI_NUM_SWAP_BLOCKS_REUSE_LOOKUPS:
492 Number of searches for blocks to reuse in the swap file.
493
494 <what> == DI_NUM_SWAP_BLOCKS_REUSE_LOOKUP_STEPS:
495 Total number of lookup steps in searches for blocks
496 to reuse in the swap file.
497
498 <what> == DI_NUM_SWAP_BLOCKS_FREE_LOOKUPS:
499 Number of searches for blocks to free in the swap file.
500
501 <what> == DI_NUM_SWAP_BLOCKS_FREE_LOOKUP_STEPS:
502 Total number of lookup steps in searches for blocks
503 to free in the swap file.
504
505 <what> == DI_SIZE_SWAP_BLOCKS:
506 Size of the swap file.
507
508 <what> == DI_SIZE_SWAP_BLOCKS_FREE:
509 Size of free blocks in the swap file.
510
511 <what> == DI_SIZE_SWAP_BLOCKS_REUSED:
512 Total reused space in the swap file.
513
514 <what> == DI_SWAP_RECYCLE_PHASE:
515 True if the swapper is currently recycling free block.
516
517
518
519 Memory allocator statistics:
520
521 <what> == DI_MEMORY_ALLOCATOR_NAME:
522 The name of the allocator: "sysmalloc", "smalloc", "slaballoc
523
524 <what> == DI_NUM_SYS_ALLOCATED_BLOCKS:
525 Number of memory blocks requested from the operating system.
526
527 <what> == DI_NUM_LARGE_BLOCKS_ALLOCATED:
528 Number of large allocated blocks.
529 (With smalloc: The large allocated blocks include
530 the small chunk blocks.)
531
532 <what> == DI_NUM_LARGE_BLOCKS_FREE:
533 Number of large free blocks.
534
535 <what> == DI_NUM_LARGE_BLOCKS_WASTE:
536 Number of unusable large memory fragments.
537
538 <what> == DI_NUM_SMALL_BLOCKS_ALLOCATED:
539 Number of small allocated blocks.
540
541 <what> == DI_NUM_SMALL_BLOCKS_FREE:
542 Number of small free blocks.
543
544 <what> == DI_NUM_SMALL_BLOCKS_WASTE:
545 Number of unusably small memory fragments.
546
547 <what> == DI_NUM_SMALL_BLOCK_CHUNKS:
548 Number of small chunk/slab blocks.
549 (That are large blocks that are used as a
550 base for small blocks.)
551
552 <what> == DI_NUM_UNMANAGED_BLOCKS:
553 Number of unmanaged (non-GC-able) allocations.
554
555 <what> == DI_NUM_FREE_BLOCKS_AVL_NODES:
556 Number of AVL nodes used to manage the large free
557 blocks. This value might go away again.
558
559 <what> == DI_SIZE_SYS_ALLOCATED_BLOCKS:
560 Total size of memory requested from the operating system.
561
562 <what> == DI_SIZE_LARGE_BLOCKS_ALLOCATED:
563 Total size of large allocated blocks.
564
565 <what> == DI_SIZE_LARGE_BLOCKS_FREE:
566 Total size of large free blocks.
567
568 <what> == DI_SIZE_LARGE_BLOCKS_WASTE:
569 Total size of unusable large memory fragments.
570
571 <what> == DI_SIZE_LARGE_BLOCK_OVERHEAD:
572 The overhead of every large block allocation.
573
574 <what> == DI_SIZE_SMALL_BLOCKS_ALLOCATED:
575 Total size of small allocated blocks.
576
577 <what> == DI_SIZE_SMALL_BLOCKS_FREE:
578 Total size of small free blocks.
579
580 <what> == DI_SIZE_SMALL_BLOCKS_WASTE:
581 Total size of unusably small memory fragments.
582
583 <what> == DI_SIZE_SMALL_BLOCK_OVERHEAD:
584 The overhead of every small block allocation.
585
586 <what> == DI_SIZE_SMALL_BLOCK_CHUNKS:
587 Total size of small chunk/slab blocks.
588
589 <what> == DI_SIZE_UNMANAGED_BLOCKS:
590 Total size of unmanaged (non-GC-able) allocations.
591
592 <what> == DI_SIZE_MEMORY_USED:
593 The amount of memory currently allocated from the allocator.
594
595 <what> == DI_SIZE_MEMORY_UNUSED:
596 The amount of memory allocated from the system, but
597 not used by the driver.
598
599 <what> == DI_SIZE_MEMORY_OVERHEAD:
600 Amount of memory used for the management of the memory.
601
602 <what> == DI_NUM_INCREMENT_SIZE_CALLS:
603 Number of requests to increase the size of a memory block.
604
605 <what> == DI_NUM_INCREMENT_SIZE_CALL_SUCCESSES:
606 Number of successful requests to increase the
607 size of a memory block.
608
609 <what> == DI_SIZE_INCREMENT_SIZE_CALL_DIFFS:
610 Total size of additionally allocated memory by
611 increasing already allocated memory blocks.
612
613 <what> == DI_NUM_REPLACEMENT_MALLOC_CALLS:
614 Number of allocations done through the
615 clib functions (if supported by the allocator).
616
617 <what> == DI_SIZE_REPLACEMENT_MALLOC_CALLS:
618 Total size of allocations done through the
619 clib functions (if supported by the allocator).
620
621 <what> == DI_NUM_MEMORY_DEFRAGMENTATION_CALLS_FULL:
622 Total number of requests to defragment all small memory chunks.
623
624 <what> == DI_NUM_MEMORY_DEFRAGMENTATION_CALLS_TARGETED:
625 Total number of requests to defragment small memory chunks
626 for a desired size.
627
628 <what> == DI_NUM_MEMORY_DEFRAGMENTATION_CALL_TARGET_HITS:
629 Total number of successful requests to defragment small
630 memory chunks for a desired size.
631
632 <what> == DI_NUM_MEMORY_DEFRAGMENTATION_BLOCKS_INSPECTED:
633 Number of blocks inspected during defragmentations.
634
635 <what> == DI_NUM_MEMORY_DEFRAGMENTATION_BLOCKS_MERGED:
636 Number of blocks merged during defragmentations.
637
638 <what> == DI_NUM_MEMORY_DEFRAGMENTATION_BLOCKS_RESULTING:
639 Number of defragmented blocks (ie. merge results).
640
641 <what> == DI_MEMORY_EXTENDED_STATISTICS:
642 If the driver was compiled with extended memory statistics,
643 they are returned in this entry; if the driver was compiled
644 without the statistics, 0 is returned.
645
646 The array contains NUM+2 entries, where NUM is the number
647 of distinct small block sizes. Entry [NUM] describes the
648 statistics of oversized small blocks (smalloc) resp. for
649 all slabs (slaballoc), entry [NUM+1] summarizes all large
650 blocks. Each entry is an array of these fields:
651
652 int DIM_ES_MAX_ALLOC:
653 Max number of allocated blocks of this size.
654
655 int DIM_ES_CUR_ALLOC:
656 Current number of allocated blocks of this size.
657
658 int DIM_ES_MAX_FREE:
659 Max number of allocated blocks of this size.
660
661 int DIM_ES_CUR_FREE:
662 Current number of allocated blocks of this size.
663
664 float DIM_ES_AVG_XALLOC:
665 Number of explicit allocation requests per
666 second.
667
668 float DIM_ES_AVG_XFREE:
669 Number of explicit deallocation requests per
670 second.
671
672 int DIM_ES_FULL_SLABS:
673 Number of fully used slabs (slaballoc only).
674
675 int DIM_ES_FREE_SLABS:
676 Number of fully free slabs (slaballoc only).
677
678 int DIM_ES_TOTAL_SLABS:
679 Total number of slabs: partially used, fully used
680 and fully free (slaballoc only).
681
682 The allocation/deallocation-per-second statistics do
683 not cover internal shuffling of the freelists.
684
685 The slab statistics (entry [NUM], slaballoc only) shows
686 in the AVG statistics the frequence with which slabs were
687 allocated from resp. returned to the large memory pool.
688
689
690
Zesstra715ec202025-07-09 22:18:31 +0200691 Status texts:
MG Mud User88f12472016-06-24 23:31:02 +0200692
693 <what> == DI_STATUS_TEXT_MEMORY:
694 A printable string containing information about
695 the memory usage.
696
697 <what> == DI_STATUS_TEXT_TABLES:
698 A printable string containing information about
699 the LPC runtime.
700
701 <what> == DI_STATUS_TEXT_SWAP:
702 A printable string containing information about
703 the swap system.
704
705 <what> == DI_STATUS_TEXT_MALLOC:
706 A printable string containing information about
707 memory allocations.
708
709 <what> == DI_STATUS_TEXT_MALLOC_EXTENDED:
710 A printable strings with extended memory statistics
711 (if the driver was compiled with them).
712
713
Zesstra715ec202025-07-09 22:18:31 +0200714 Misc Status:
715
716 <what> == DI_NUM_SIMUL_EFUNS_TABLED:
717 The number of known simul_efuns (active or not) in the simul_efun
718 table.
719
720
MG Mud User88f12472016-06-24 23:31:02 +0200721HISTORY
722 Introduced in LDMud 3.5.0.
723
724SEE ALSO
725 configure_driver(E), object_info(E), interactive_info(E),
726 dump_driver_info(E)