syn_iargs.push_back( atoi(args[++i]) );
syn_iargs.push_back( atoi(args[++i]) );
syn_iargs.push_back( atoi(args[++i]) );
+ } else if (strcmp(args[i],"readdirs") == 0) {
+ syn_modes.push_back( SYNCLIENT_MODE_READDIRS );
+ syn_iargs.push_back( atoi(args[++i]) );
+ syn_iargs.push_back( atoi(args[++i]) );
+ syn_iargs.push_back( atoi(args[++i]) );
+
} else if (strcmp(args[i],"makefiles") == 0) {
syn_modes.push_back( SYNCLIENT_MODE_MAKEFILES );
syn_iargs.push_back( atoi(args[++i]) );
return 0;
}
+int SyntheticClient::read_dirs(const char *basedir, int dirs, int files, int depth)
+{
+ if (time_to_stop()) return 0;
+
+ struct stat st;
+
+ // children
+ char d[500];
+ dout(3) << "stat_dirs " << basedir << " dirs " << dirs << " files " << files << " depth " << depth << endl;
+
+ map<string,inode_t*> contents;
+ int r = client->getdir(basedir, contents);
+ if (r < 0) dout(0) << "stat_dirs couldn't readdir " << basedir << endl;
+
+ for (int i=0; i<files; i++) {
+ sprintf(d,"%s/file.%d", basedir, i);
+ client->lstat(d, &st);
+ }
+
+ if (depth == 0) return 0;
+
+ for (int i=0; i<dirs; i++) {
+ sprintf(d, "%s/dir.%d", basedir, i);
+ read_dirs(d, dirs, files, depth-1);
+ }
+
+ return 0;
+}
int SyntheticClient::make_files(int num, int count, int priv, bool more)
#define SYNCLIENT_MODE_FULLWALK 2
#define SYNCLIENT_MODE_REPEATWALK 7
-#define SYNCLIENT_MODE_MAKEDIRS 9 // dirs files depth
-#define SYNCLIENT_MODE_STATDIRS 10 // dirs files depth
+#define SYNCLIENT_MODE_MAKEDIRS 8 // dirs files depth
+#define SYNCLIENT_MODE_STATDIRS 9 // dirs files depth
+#define SYNCLIENT_MODE_READDIRS 10 // dirs files depth
+
#define SYNCLIENT_MODE_MAKEFILES 11 // num count private
#define SYNCLIENT_MODE_MAKEFILES2 12 // num count private
#define SYNCLIENT_MODE_CREATESHARED 13 // num
int make_dirs(const char *basedir, int dirs, int files, int depth);
int stat_dirs(const char *basedir, int dirs, int files, int depth);
+ int read_dirs(const char *basedir, int dirs, int files, int depth);
int make_files(int num, int count, int priv, bool more);
int create_shared(int num);
--- /dev/null
+#!/usr/bin/perl
+
+# hi there
+{
+ '_psub' => 'jobs/alc.tp',
+
+ 'sleep' => 3,
+
+ 'nummds' => 1,
+ 'numosd' => 8,
+ 'numclient' => [5, 10, 20, 40, 80, 160 ],
+ 'n' => 20,
+
+ # parameters
+ 'fs' => 'ebofs',
+
+ 'start' => 100,
+ 'end' => 200,
+ 'until' => 200,
+ 'kill_after' => 300,
+
+ 'makedirs' => 1,
+ 'makedirs_dirs' => 10,
+ 'makedirs_files' => 10,
+ 'makedirs_depth' => 3,
+
+ 'mds_local_osd' => [ 0, 1 ],
+ 'meta_log_layout_num_rep' => [1, 2, 3],
+
+ 'custom' => '--tcp_skip_rank0',
+ #'custom' => '--debug_after 110 --debug_osd 15 --debug_filer 15 --debug 5',
+
+ # for final summation (script/sum.pl)
+
+ 'comb' => {
+ 'x' => 'nummds',
+ 'vars' => [ 'mds.req' ]
+ }
+};
'osd_maxthreads', 'osd_object_layout', 'osd_pg_layout','osd_pg_bits',
'mds_bal_rep', 'mds_bal_interval', 'mds_bal_max','mds_decay_halflife',
'mds_bal_hash_rd','mds_bal_hash_wr','mds_bal_unhash_rd','mds_bal_unhash_wr',
+ 'mds_local_osd',
+ 'client_cache_stat_ttl','client_cache_readdir_ttl',
'bdev_el_bidir', 'ebofs_idle_commit_ms', 'ebofs_commit_ms',
'ebofs_oc_size','ebofs_cc_size','ebofs_bc_size','ebofs_bc_max_dirty','ebofs_abp_max_alloc',
'file_layout_ssize','file_layout_scount','file_layout_osize','file_layout_num_rep',