summaryrefslogtreecommitdiffstats
path: root/kernel/performance/fs_mark/PURPOSE
blob: 813febcc57202cdeb9848006470bbe311a67412a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
#=====================================================================
#
# 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 
#   <kernel-general-test-team@redhat.com>
# 
#=====================================================================
# 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 <ric@emc.com> in the tarball found here:
# http://downloads.sourceforge.net/project/fsmark/fsmark/3.3/fs_mark-3.3.tar.gz
# 
#=====================================================================
# EndFile