rw, offset, length
where with rw=0/1 for read/write, and the offset
and length entries being in bytes.
-
+ lockmem=x Lock down x amount of memory on the machine, to
+ simulate a machine with less memory available. x can
+ include k/m/g suffix.
Examples using a job file
-------------------------
int write_lat_log = 0;
int write_bw_log = 0;
int exitall_on_terminate = 0;
+unsigned long long mlock_size = 0;
static int setup_rate(struct thread_data *td)
{
fgetpos(f, &off);
continue;
}
+ if (!check_strcnv(p, "lockmem", &mlock_size)) {
+ fgetpos(f, &off);
+ continue;
+ }
if (!check_strstore(p, "directory", td->directory)) {
fgetpos(f, &off);
continue;
static void disk_util_timer_arm(void);
static void print_thread_status(void);
+extern unsigned long long mlock_size;
+
/*
* thread life cycle
*/
struct thread_data *td;
unsigned long spent;
int i, todo, nr_running, m_rate, t_rate, nr_started;
+ void *mlocked_mem = NULL;
printf("Starting %d thread%s\n", thread_number, thread_number > 1 ? "s" : "");
+
+ if (mlock_size) {
+ mlocked_mem = malloc(mlock_size);
+ if (!mlocked_mem) {
+ perror("malloc locked mem");
+ return;
+ }
+ if (mlock(mlocked_mem, mlock_size) < 0) {
+ free(mlocked_mem);
+ perror("mlock");
+ return;
+ }
+ }
+
fflush(stdout);
signal(SIGINT, sig_handler);
}
update_io_ticks();
+
+ if (mlocked_mem) {
+ if (munlock(mlocked_mem, mlock_size) < 0)
+ perror("munlock");
+ free(mlocked_mem);
+ }
}
static void show_group_stats(struct group_run_stats *rs, int id)