Tiny: Enable P0→FC direct path for class7 (1KB) by default + docs
- Class7 (1KB): P0 direct-to-FastCache now default ON (HAKMEM_TINY_P0_DIRECT_FC_C7 unset or not '0'). - Keep A/B gates: HAKMEM_TINY_P0_ENABLE, HAKMEM_TINY_P0_DIRECT_FC (class5), HAKMEM_TINY_P0_DIRECT_FC_C7 (class7), HAKMEM_TINY_P0_DRAIN_THRESH (default 32), HAKMEM_TINY_P0_NO_DRAIN, HAKMEM_TINY_P0_LOG. - P0 batch now supports class7 direct fill in addition to class5: gather (drain thresholded → freelist pop → linear carve) without writing into objects, then bulk-push into FC, update meta/active counters once. - Docs: Update direct-FC defaults (class5+class7 ON) in docs/TINY_P0_BATCH_REFILL.md. Notes - Use tools/bench_rs_from_files.sh for RS(hakmem/system) to compare runs across CPUs. - Next: parameter sweep for class7 (FC cap/batch limit/drain threshold) and perf counters A/B.
This commit is contained in:
@ -1829,3 +1829,24 @@ void hkm_ace_set_drain_threshold(int class_idx, uint32_t threshold) {
|
||||
// Set per-class threshold (used by remote free drain logic)
|
||||
g_remote_drain_thresh_per_class[class_idx] = (int)threshold;
|
||||
}
|
||||
#include "tiny_fc_api.h"
|
||||
int tiny_fc_room(int class_idx) {
|
||||
if (class_idx < 0 || class_idx >= TINY_NUM_CLASSES) return 0;
|
||||
TinyFastCache* fc = &g_fast_cache[class_idx];
|
||||
int room = TINY_FASTCACHE_CAP - fc->top;
|
||||
return room > 0 ? room : 0;
|
||||
}
|
||||
|
||||
int tiny_fc_push_bulk(int class_idx, void** arr, int n) {
|
||||
if (!arr || n <= 0) return 0;
|
||||
if (class_idx < 0 || class_idx >= TINY_NUM_CLASSES) return 0;
|
||||
TinyFastCache* fc = &g_fast_cache[class_idx];
|
||||
int room = TINY_FASTCACHE_CAP - fc->top;
|
||||
if (room <= 0) return 0;
|
||||
int take = n < room ? n : room;
|
||||
// Simple forward fill; no reordering
|
||||
for (int i = 0; i < take; i++) {
|
||||
fc->items[fc->top++] = arr[i];
|
||||
}
|
||||
return take;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user