|
Description
|
I was seeing:
heavy# /usr/benchmarks/filebench/bin/filebench oltp
...
IO Summary: 866151 ops 7145.6 ops/s, (3566/3544 r/w) 14.1mb/s, 137us cpu/op, 3.7ms latency
101182: 136.958: Stats dump to file 'stats.seqread1m.out'
101182: 136.958: in statsdump stats.seqread1m.out
101182: 136.958: Shutting down processes
101376: 138.313: semop post failed: Identifier removed
101298: 138.313: semop post failed: Identifier removed
101243: 138.313: semop post failed: Identifier removed
101376: 138.313: shadow-1: flowop shadow-post-dbwr-1 failed
101292: 138.313: semop post failed: Identifier removed
101352: 138.313: semop post failed: Identifier removed
101285: 138.313: semop post failed: Identifier removed
101298: 138.314: shadow-1: flowop shadow-post-dbwr-1 failed
....
This was using oltp.prof:
DEFAULTS {
runtime = 120;
dir = /d;
stats = /tmp;
filesystem = zfs;
description = "dsync zfs";
}
CONFIG seqread1m {
function = generic;
personality = oltp;
}
Problem is that each sempost flowop is trying to remove the global 'shm_sys_semid':
static void
flowoplib_semblock_destruct(flowop_t *flowop)
{
#ifdef HAVE_SYSV_SEM
ipc_semidfree(flowop->fo_semid_lw);
ipc_semidfree(flowop->fo_semid_hw);
(void) semctl(filebench_shm->shm_sys_semid, 0, IPC_RMID);
filebench_shm->shm_sys_semid = -1;
#else
sem_destroy(&flowop->fo_sem);
#endif /* HAVE_SYSV_SEM */
}
The semaphore is initially created in ipc_init() and should be cleaned up instead in
ipc_cleanup().
|