View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0000520 | LDMud 3.3 | Runtime | public | 2007-10-12 13:25 | 2018-01-29 21:57 |
| Reporter | zesstra | Assigned To | |||
| Priority | normal | Severity | minor | Reproducibility | N/A |
| Status | resolved | Resolution | fixed | ||
| Product Version | 3.3 | ||||
| Fixed in Version | 3.3.716 | ||||
| Summary | 0000520: Overflow of apply_cache_hit, apply_cache_miss causing wrong statistics | ||||
| Description | 'status tables' gave me the following info about the apply cache: Apply Cache: ------------ Calls to apply_low: 4042499944 Cache hits: 3902887001 (155.30%) apply_cache_hit and apply_cache_miss in interpret.c|h are of type p_int and outputted as unsigned long in the 'status' command. Obviously, 'signed long' (p_int) overflowed. For both variables only positive values are of interest, therefore I suggest to change their type to p_uint (s. attached patch). Of course, this doesn't solve the overflow problem. ;-) A possibility may be to decay both values by a constant factor from time to time, e.g. in a function like wiz_decay() called by the backend. Any opinions on this? | ||||
| Tags | No tags attached. | ||||
| Attached Files | apply_cache.diff (874 bytes)
diff -ur trunk/src/interpret.c trunk.mod/src/interpret.c
--- trunk/src/interpret.c 2007-10-12 21:01:11.000000000 +0200
+++ trunk.mod/src/interpret.c 2007-10-12 21:02:25.000000000 +0200
@@ -611,8 +611,8 @@
*/
#ifdef APPLY_CACHE_STAT
-p_int apply_cache_hit = 0;
-p_int apply_cache_miss = 0;
+p_uint apply_cache_hit = 0;
+p_uint apply_cache_miss = 0;
/* Number of hits and misses in the apply cache.
*/
#endif
diff -ur trunk/src/interpret.h trunk.mod/src/interpret.h
--- trunk/src/interpret.h 2007-10-12 21:01:11.000000000 +0200
+++ trunk.mod/src/interpret.h 2007-10-12 21:02:33.000000000 +0200
@@ -111,8 +111,8 @@
extern svalue_t last_indexing_protector;
#ifdef APPLY_CACHE_STAT
-extern p_int apply_cache_hit;
-extern p_int apply_cache_miss;
+extern p_uint apply_cache_hit;
+extern p_uint apply_cache_miss;
#endif
extern unsigned long total_evalcost;
| ||||
|
|
Implemented the patch. If overflows continue to be a problem, we may want to move to a gigahit/hit counter approach (like we do with VM ticks). |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2007-10-12 13:25 | zesstra | New Issue | |
| 2007-10-12 13:26 | zesstra | File Added: apply_cache.diff | |
| 2007-10-13 23:30 |
|
Status | new => resolved |
| 2007-10-13 23:30 |
|
Fixed in Version | => 3.3.716 |
| 2007-10-13 23:30 |
|
Resolution | open => fixed |
| 2007-10-13 23:30 |
|
Assigned To | => lars |
| 2007-10-13 23:30 |
|
Note Added: 0000567 | |
| 2010-11-16 09:42 |
|
Source_changeset_attached | => ldmud.git master 720d8316 |
| 2018-01-29 18:59 |
|
Source_changeset_attached | => ldmud.git master 720d8316 |
| 2018-01-29 21:57 |
|
Source_changeset_attached | => ldmud.git master 720d8316 |