]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
*** empty log message ***
authorsage <sage@29311d96-e01e-0410-9327-a35deaab8ce9>
Tue, 21 Mar 2006 20:21:18 +0000 (20:21 +0000)
committersage <sage@29311d96-e01e-0410-9327-a35deaab8ce9>
Tue, 21 Mar 2006 20:21:18 +0000 (20:21 +0000)
git-svn-id: https://ceph.svn.sf.net/svnroot/ceph@726 29311d96-e01e-0410-9327-a35deaab8ce9

ceph/client/SyntheticClient.cc
ceph/client/SyntheticClient.h
ceph/jobs/mds/makedir_lat [new file with mode: 0644]
ceph/script/runset.pl

index cd76cd82050450983acaf2a5dc062a595b3a3f3b..3ea171c8c5d5a18736338402a579a1f576610d19 100644 (file)
@@ -80,6 +80,12 @@ void parse_syn_options(vector<char*>& args)
                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]) );
@@ -735,6 +741,34 @@ int SyntheticClient::stat_dirs(const char *basedir, int dirs, int files, int dep
   
   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)
index 1adfe5fe23db2f2fc9529a1524a9032475a1b973..2128457740134f0b7405863145a245d9609b3339 100644 (file)
 #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
@@ -169,6 +171,7 @@ class SyntheticClient {
 
   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);
diff --git a/ceph/jobs/mds/makedir_lat b/ceph/jobs/mds/makedir_lat
new file mode 100644 (file)
index 0000000..111ff39
--- /dev/null
@@ -0,0 +1,39 @@
+#!/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' ]
+       }
+};
index 9d7f86dec10ba33ea53bea690bbef4c383583768..3755e98900952025204d45c06ac012bbc52a4d84 100755 (executable)
@@ -205,6 +205,8 @@ sub run {
                           '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',