#===================================================================== # # PURPOSE file for: # /kernel/performance/fs_mark # # Description: # The fs_mark benchmark tests synchronous write workloads. It can # vary the number of files, directory depth, etc. It has detailed # timings for reads, writes, unlinks and fsyncs that make it good # for simulating mail servers and other setups. # # Author(s): # Kernel General Test Team # # #===================================================================== # Note: # This task writes to two directories synchronously. # As a benchmark, this task can be used to compare results from # testing a released kernel version and "currently testing" kernel # version. # #===================================================================== # This task takes optional parameters: # [] FSMARK_S_PARAM - the size of the files written # (Our task default is "FSMARK_S_PARAM = 32768") # # [] FSMARK_N_PARAM - the number of files to write # (Our task default is "FSMARK_N_PARAM = 4096") # #===================================================================== # These are the options to fs-mark that we currrently use: # (See here for all available options: # http://file.bos.redhat.com/pbunyan/KT1/PURPOSE/fs_mark-options) # # [] "-d" # This argument allows you to specify one or more directories to # run the test against. One thread is created for each of these # root directories. Note that "-d" can appear multiple times. # # [] "-s num" # Specifies the size(s) of the files to be tested. # # [] "-n num" # Specifies the number of files to be tested. # # [] "-l logfile_name" # Sets the name of the logfile. # # [] "-r num" # Sets the number of random bytes at the end of the file name. # To have purely random names, use "-p X -r X". # # [] "-D num" # This flag allows you to specify how many subdirectories you # want to use under each of the above root directories. Invoking # fs_mark with "-D 256" would create 256 directories under # specified directory. Only one thread is used to write to all of # the subdirectories. # #===================================================================== # The task output shows: # FSUse% Count Size Files/sec App Overhead # ## #### ##### #.# ###### # # FSUse%: The % full the file system is on the first directory # specified. # Count: How many files have been written. # Size: Size of files written. # Files/sec: The rate that files are written to disk. # App Overhead: Time in microseconds spent in the inner file writing # loop not doing file writing related system calls. # # *A graph is provided with all test results for ease of comparisons. # #===================================================================== # We have three versions of the test we run: # (Sample from: https://beaker.engineering.redhat.com/recipes/897455) # [] Default # Here is a sample "default" test run # ./fs_mark -d /mnt/testarea/testdir1 -d /mnt/testarea/testdir2 # -s 32768 -n 4096 -l /mnt/testarea/fs_1.log # # Version: Version 3.2, 2 thread(s) starting at `date`. # Sync method: INBAND FSYNC: fsync() per file in write loop. # Directories: No subdirectories used. # File names: 40 bytes long, (16 initial bytes of time stamp with # 24 random bytes at end of name). # Files info: The size 32768 bytes written with an IO size of # 16384 bytes per write. # App overhead: The time in microseconds spent in the inner file writing # loop not doing file writing related system calls. # # FSUse% Count Size Files/sec App OverheadA # 12 8192 32768 41.6 61471 # # [] Random # Here is a sample "random" test run # ./fs_mark -d /mnt/testarea/testdir1 -d /mnt/testarea/testdir2 # -s 32768 -n 4096 -l /mnt/testarea/fs_2.log -r 32 # # Version: Version 3.2, 2 thread(s) starting at Mon `date`. # Sync method: INBAND FSYNC: fsync() per file in write loop. # Directories: No subdirectories used. # File names: 40 bytes long, (8 initial bytes of time stamp with # 32 random bytes at end of name). # Files info: The size 32768 bytes written with an IO size of # 16384 bytes per write. # App overhead: The time in microseconds spent in the inner file writing # loop not doing file writing related system calls. # # FSUse% Count Size Files/sec App Overhead # 12 8192 32768 42.0 62339 # # [] MultiDir # Here is a sample "multi-dir" test run # ./fs_mark -d /mnt/testarea/testdir1 -d /mnt/testarea/testdir2 # -s 32768 -n 4096 -l mnt/testarea/fs_3.log -D 128 # # Version: Version 3.2, 2 thread(s) starting at `date` # Sync method: INBAND FSYNC: fsync() per file in write loop. # Directories: Time based hash between directories across # 128 subdirectories with 180 seconds per subdirectory. # File names: 40 bytes long, (16 initial bytes of time stamp with # 24 random bytes at end of name) # Files info: The size 32768 bytes written with an IO size of # 16384 bytes per write. # App overhead: The time in microseconds spent in the inner file writing # loop not doing file writing related system calls. # # FSUse% Count Size Files/sec App Overhead # 12 8192 32768 42.1 62815 # # [] Random_MultiDir # Here is a sample "random-multi-dir" test run # ./fs_mark -d /mnt/testarea/testdir1 -d /mnt/testarea/testdir2 # -s 32768 -n 4096 -l /mnt/testarea/fs_4.log -r 32 -D 128 # # Version: Version 3.2, 2 thread(s) starting at `date` # Sync method: INBAND FSYNC: fsync() per file in write loop. # Directories: Time based hash between directories across # 128 subdirectories with 180 seconds per subdirectory. # File names: 40 bytes long, (8 initial bytes of time stamp with # 32 random bytes at end of name). # Files info: The size 32768 bytes written with an IO size of # 16384 bytes per write. # App overhead: The time in microseconds spent in the inner file writing # loop not doing file writing related system calls. # # FSUse% Count Size Files/sec App Overhead # 12 8192 32768 42.2 63590 # #===================================================================== # Test details: # Furthur detailed explanations and command line arguments are available, # if interested. There is an excellent README file written by # Ric Wheeler in the tarball found here: # http://downloads.sourceforge.net/project/fsmark/fsmark/3.3/fs_mark-3.3.tar.gz # #===================================================================== # EndFile