fio-2.2.5.zip
大小:631.27KB
价格:40积分
下载量:0
评分:
5.0
上传者:qq_44152062
更新日期:2025-09-22

linux fio磁盘性能测试工具

资源文件列表(大概)

文件名
大小
fio-2.2.5/
-
fio-2.2.5/.gitignore
113B
fio-2.2.5/arch/
-
fio-2.2.5/arch/arch-aarch64.h
785B
fio-2.2.5/arch/arch-alpha.h
509B
fio-2.2.5/arch/arch-arm.h
1005B
fio-2.2.5/arch/arch-generic.h
244B
fio-2.2.5/arch/arch-hppa.h
504B
fio-2.2.5/arch/arch-ia64.h
1.11KB
fio-2.2.5/arch/arch-mips.h
526B
fio-2.2.5/arch/arch-ppc.h
2.4KB
fio-2.2.5/arch/arch-s390.h
1.08KB
fio-2.2.5/arch/arch-sh.h
1.1KB
fio-2.2.5/arch/arch-sparc.h
506B
fio-2.2.5/arch/arch-sparc64.h
652B
fio-2.2.5/arch/arch-x86-common.h
1.28KB
fio-2.2.5/arch/arch-x86.h
1.15KB
fio-2.2.5/arch/arch-x86_64.h
1.33KB
fio-2.2.5/arch/arch.h
1.35KB
fio-2.2.5/backend.c
46.49KB
fio-2.2.5/blktrace.c
10.58KB
fio-2.2.5/blktrace_api.h
4.28KB
fio-2.2.5/cairo_text_helpers.c
2.11KB
fio-2.2.5/cairo_text_helpers.h
571B
fio-2.2.5/cconv.c
20.15KB
fio-2.2.5/cgroup.c
3.77KB
fio-2.2.5/cgroup.h
552B
fio-2.2.5/client.c
39.89KB
fio-2.2.5/client.h
3.5KB
fio-2.2.5/compiler/
-
fio-2.2.5/compiler/compiler-gcc3.h
182B
fio-2.2.5/compiler/compiler-gcc4.h
422B
fio-2.2.5/compiler/compiler.h
1.45KB
fio-2.2.5/configure
35.68KB
fio-2.2.5/COPYING
17.59KB
fio-2.2.5/crc/
-
fio-2.2.5/crc/crc16.c
2.52KB
fio-2.2.5/crc/crc16.h
658B
fio-2.2.5/crc/crc32.c
4.2KB
fio-2.2.5/crc/crc32.h
910B
fio-2.2.5/crc/crc32c-intel.c
1.95KB
fio-2.2.5/crc/crc32c.c
5KB
fio-2.2.5/crc/crc32c.h
1.34KB
fio-2.2.5/crc/crc64.c
6.26KB
fio-2.2.5/crc/crc64.h
109B
fio-2.2.5/crc/crc7.c
1.95KB
fio-2.2.5/crc/crc7.h
301B
fio-2.2.5/crc/fnv.c
278B
fio-2.2.5/crc/fnv.h
116B
fio-2.2.5/crc/md5.c
4.79KB
fio-2.2.5/crc/md5.h
681B
fio-2.2.5/crc/murmur3.c
1.34KB
fio-2.2.5/crc/murmur3.h
144B
fio-2.2.5/crc/sha1.c
5.65KB
fio-2.2.5/crc/sha1.h
484B
fio-2.2.5/crc/sha256.c
9.9KB
fio-2.2.5/crc/sha256.h
387B
fio-2.2.5/crc/sha512.c
6.84KB
fio-2.2.5/crc/sha512.h
278B
fio-2.2.5/crc/test.c
5.8KB
fio-2.2.5/crc/test.h
90B
fio-2.2.5/crc/xxhash.c
13.72KB
fio-2.2.5/crc/xxhash.h
6.36KB
fio-2.2.5/debug.c
464B
fio-2.2.5/debug.h
882B
fio-2.2.5/diskutil.c
17.62KB
fio-2.2.5/diskutil.h
2.85KB
fio-2.2.5/engines/
-
fio-2.2.5/engines/binject.c
8.71KB
fio-2.2.5/engines/cpu.c
2.52KB
fio-2.2.5/engines/e4defrag.c
4.61KB
fio-2.2.5/engines/falloc.c
2.49KB
fio-2.2.5/engines/fusion-aw.c
4.71KB
fio-2.2.5/engines/gfapi.h
640B
fio-2.2.5/engines/glusterfs.c
6.04KB
fio-2.2.5/engines/glusterfs_async.c
3.96KB
fio-2.2.5/engines/glusterfs_sync.c
2.17KB
fio-2.2.5/engines/guasi.c
6.09KB
fio-2.2.5/engines/libaio.c
8.63KB
fio-2.2.5/engines/libhdfs.c
5.59KB
fio-2.2.5/engines/mmap.c
6.08KB
fio-2.2.5/engines/net.c
30.38KB
fio-2.2.5/engines/null.c
3.45KB
fio-2.2.5/engines/posixaio.c
5.3KB
fio-2.2.5/engines/rbd.c
11.37KB
fio-2.2.5/engines/rdma.c
28.67KB
fio-2.2.5/engines/sg.c
8.97KB
fio-2.2.5/engines/skeleton_external.c
3.91KB
fio-2.2.5/engines/solarisaio.c
4.8KB
fio-2.2.5/engines/splice.c
6.32KB
fio-2.2.5/engines/sync.c
8.61KB
fio-2.2.5/engines/windowsaio.c
10.3KB
fio-2.2.5/err.h
860B
fio-2.2.5/eta.c
13.99KB
fio-2.2.5/examples/
-
fio-2.2.5/examples/1mbs_clients.fio
879B
fio-2.2.5/examples/aio-read.fio
205B
fio-2.2.5/examples/cpuio.fio
75B
fio-2.2.5/examples/disk-zone-profile.fio
238B
fio-2.2.5/examples/e4defrag.fio
527B
fio-2.2.5/examples/e4defrag2.fio
1.31KB
fio-2.2.5/examples/enospc-pressure.fio
1.03KB
fio-2.2.5/examples/falloc.fio
762B
fio-2.2.5/examples/flow.fio
329B
fio-2.2.5/examples/fsx.fio
209B
fio-2.2.5/examples/fusion-aw-sync.fio
365B
fio-2.2.5/examples/gfapi.fio
264B
fio-2.2.5/examples/iometer-file-access-server.fio
439B
fio-2.2.5/examples/latency-profile.fio
486B
fio-2.2.5/examples/libhdfs.fio
112B
fio-2.2.5/examples/netio.fio
395B
fio-2.2.5/examples/netio_multicast.fio
383B
fio-2.2.5/examples/null.fio
98B
fio-2.2.5/examples/numa.fio
401B
fio-2.2.5/examples/rbd.fio
543B
fio-2.2.5/examples/rdmaio-client.fio
172B
fio-2.2.5/examples/rdmaio-server.fio
121B
fio-2.2.5/examples/ssd-steadystate.fio
1.14KB
fio-2.2.5/examples/ssd-test.fio
846B
fio-2.2.5/examples/surface-scan.fio
399B
fio-2.2.5/examples/tiobench-example.fio
287B
fio-2.2.5/examples/zipf.fio
221B
fio-2.2.5/exp/
-
fio-2.2.5/exp/expression-parser.l
4.55KB
fio-2.2.5/exp/expression-parser.y
6.19KB
fio-2.2.5/exp/README.md
179B
fio-2.2.5/exp/test-expression-parser.c
1.49KB
fio-2.2.5/fifo.c
2.25KB
fio-2.2.5/fifo.h
1.48KB
fio-2.2.5/file.h
5.12KB
fio-2.2.5/filehash.c
2.22KB
fio-2.2.5/filehash.h
405B
fio-2.2.5/filelock.c
4.19KB
fio-2.2.5/filelock.h
258B
fio-2.2.5/filesetup.c
31.75KB
fio-2.2.5/FIO-VERSION-GEN
723B
fio-2.2.5/fio.1
67.97KB
fio-2.2.5/fio.c
1.41KB
fio-2.2.5/fio.h
14.71KB
fio-2.2.5/fio_time.h
837B
fio-2.2.5/flist.h
5.05KB
fio-2.2.5/flow.c
2.15KB
fio-2.2.5/flow.h
233B
fio-2.2.5/gclient.c
40.08KB
fio-2.2.5/gclient.h
385B
fio-2.2.5/gcompat.c
1.24KB
fio-2.2.5/gcompat.h
1.42KB
fio-2.2.5/gerror.c
2.08KB
fio-2.2.5/gerror.h
215B
fio-2.2.5/gettime-thread.c
1.99KB
fio-2.2.5/gettime.c
12.97KB
fio-2.2.5/gettime.h
757B
fio-2.2.5/GFIO-TODO
1.88KB
fio-2.2.5/gfio.c
51.38KB
fio-2.2.5/gfio.h
3.39KB
fio-2.2.5/ghelpers.c
4.85KB
fio-2.2.5/ghelpers.h
1.22KB
fio-2.2.5/goptions.c
37.73KB
fio-2.2.5/goptions.h
172B
fio-2.2.5/graph.c
23.25KB
fio-2.2.5/graph.h
4.46KB
fio-2.2.5/hash.h
3.61KB
fio-2.2.5/helpers.c
706B
fio-2.2.5/helpers.h
438B
fio-2.2.5/HOWTO
86.32KB
fio-2.2.5/idletime.c
11.24KB
fio-2.2.5/idletime.h
1.16KB
fio-2.2.5/init.c
52.48KB
fio-2.2.5/ioengine.h
6.94KB
fio-2.2.5/ioengines.c
12.8KB
fio-2.2.5/iolog.c
24.4KB
fio-2.2.5/iolog.h
5.02KB
fio-2.2.5/io_ddir.h
1.72KB
fio-2.2.5/io_u.c
40.94KB
fio-2.2.5/io_u_queue.c
762B
fio-2.2.5/io_u_queue.h
1.4KB
fio-2.2.5/json.c
7.69KB
fio-2.2.5/json.h
2.38KB
fio-2.2.5/lib/
-
fio-2.2.5/lib/axmap.c
10.38KB
fio-2.2.5/lib/axmap.h
527B
fio-2.2.5/lib/bloom.c
2.08KB
fio-2.2.5/lib/bloom.h
233B
fio-2.2.5/lib/bswap.h
859B
fio-2.2.5/lib/ffz.h
533B
fio-2.2.5/lib/flist_sort.c
3.41KB
fio-2.2.5/lib/fls.h
628B
fio-2.2.5/lib/getopt.h
352B
fio-2.2.5/lib/getopt_long.c
3.44KB
fio-2.2.5/lib/getrusage.c
273B
fio-2.2.5/lib/getrusage.h
151B
fio-2.2.5/lib/hweight.c
871B
fio-2.2.5/lib/hweight.h
182B
fio-2.2.5/lib/ieee754.c
1.83KB
fio-2.2.5/lib/ieee754.h
445B
fio-2.2.5/lib/inet_aton.c
116B
fio-2.2.5/lib/inet_aton.h
141B
fio-2.2.5/lib/lfsr.c
7.63KB
fio-2.2.5/lib/lfsr.h
571B
fio-2.2.5/lib/linux-dev-lookup.c
1.23KB
fio-2.2.5/lib/linux-dev-lookup.h
163B
fio-2.2.5/lib/num2str.c
1.63KB
fio-2.2.5/lib/prio_tree.c
11.69KB
fio-2.2.5/lib/prio_tree.h
2.14KB
fio-2.2.5/lib/rand.c
4.4KB
fio-2.2.5/lib/rand.h
1.26KB
fio-2.2.5/lib/rbtree.c
7.21KB
fio-2.2.5/lib/rbtree.h
4.5KB
fio-2.2.5/lib/strcasestr.c
366B
fio-2.2.5/lib/strcasestr.h
180B
fio-2.2.5/lib/strsep.c
379B
fio-2.2.5/lib/strsep.h
96B
fio-2.2.5/lib/tp.c
2.31KB
fio-2.2.5/lib/tp.h
603B
fio-2.2.5/lib/zipf.c
2.16KB
fio-2.2.5/lib/zipf.h
539B
fio-2.2.5/libfio.c
7.15KB
fio-2.2.5/LICENSE
912B
fio-2.2.5/log.c
1.84KB
fio-2.2.5/log.h
577B
fio-2.2.5/Makefile
10.82KB
fio-2.2.5/memalign.c
667B
fio-2.2.5/memalign.h
162B
fio-2.2.5/memory.c
6.26KB
fio-2.2.5/minmax.h
324B
fio-2.2.5/mutex.c
5.1KB
fio-2.2.5/mutex.h
1.02KB
fio-2.2.5/options.c
91.66KB
fio-2.2.5/options.h
4.36KB
fio-2.2.5/os/
-
fio-2.2.5/os/binject.h
1.58KB
fio-2.2.5/os/kcompat.h
112B
fio-2.2.5/os/os-aix.h
913B
fio-2.2.5/os/os-android.h
5.09KB
fio-2.2.5/os/os-dragonfly.h
1.11KB
fio-2.2.5/os/os-freebsd.h
2.14KB
fio-2.2.5/os/os-hpux.h
1.83KB
fio-2.2.5/os/os-linux.h
5.36KB
fio-2.2.5/os/os-mac.h
3.58KB
fio-2.2.5/os/os-netbsd.h
1.2KB
fio-2.2.5/os/os-openbsd.h
1.08KB
fio-2.2.5/os/os-solaris.h
3.21KB
fio-2.2.5/os/os-windows.h
5.86KB
fio-2.2.5/os/os.h
6.58KB
fio-2.2.5/os/windows/
-
fio-2.2.5/os/windows/dobuild.cmd
693B
fio-2.2.5/os/windows/eula.rtf
1.04KB
fio-2.2.5/os/windows/examples.wxs
3.17KB
fio-2.2.5/os/windows/install.wxs
2.58KB
fio-2.2.5/os/windows/posix/
-
fio-2.2.5/os/windows/posix/include/
-
fio-2.2.5/os/windows/posix/include/arpa/
-
fio-2.2.5/os/windows/posix/include/arpa/inet.h
461B
fio-2.2.5/os/windows/posix/include/asm/
-
fio-2.2.5/os/windows/posix/include/asm/types.h
159B
fio-2.2.5/os/windows/posix/include/dirent.h
390B
fio-2.2.5/os/windows/posix/include/dlfcn.h
229B
fio-2.2.5/os/windows/posix/include/libgen.h
86B
fio-2.2.5/os/windows/posix/include/netdb.h
54B
fio-2.2.5/os/windows/posix/include/netinet/
-
fio-2.2.5/os/windows/posix/include/netinet/in.h
113B
fio-2.2.5/os/windows/posix/include/netinet/tcp.h
52B
fio-2.2.5/os/windows/posix/include/poll.h
51B
fio-2.2.5/os/windows/posix/include/semaphore.h
66B
fio-2.2.5/os/windows/posix/include/sys/
-
fio-2.2.5/os/windows/posix/include/sys/ipc.h
60B
fio-2.2.5/os/windows/posix/include/sys/mman.h
859B
fio-2.2.5/os/windows/posix/include/sys/poll.h
202B
fio-2.2.5/os/windows/posix/include/sys/resource.h
306B
fio-2.2.5/os/windows/posix/include/sys/shm.h
1.13KB
fio-2.2.5/os/windows/posix/include/sys/socket.h
69B
fio-2.2.5/os/windows/posix/include/sys/uio.h
402B
fio-2.2.5/os/windows/posix/include/sys/un.h
223B
fio-2.2.5/os/windows/posix/include/sys/wait.h
231B
fio-2.2.5/os/windows/posix/include/syslog.h
307B
fio-2.2.5/os/windows/posix.c
21.95KB
fio-2.2.5/os/windows/posix.h
278B
fio-2.2.5/parse.c
24.21KB
fio-2.2.5/parse.h
3.64KB
fio-2.2.5/printing.c
4.24KB
fio-2.2.5/printing.h
94B
fio-2.2.5/profile.c
2.12KB
fio-2.2.5/profile.h
1.14KB
fio-2.2.5/profiles/
-
fio-2.2.5/profiles/act.c
10.37KB
fio-2.2.5/profiles/tiobench.c
3.01KB
fio-2.2.5/README
13.42KB
fio-2.2.5/REPORTING-BUGS
501B
fio-2.2.5/SERVER-TODO
130B
fio-2.2.5/server.c
40.45KB
fio-2.2.5/server.h
5.42KB
fio-2.2.5/smalloc.c
9.44KB
fio-2.2.5/smalloc.h
284B
fio-2.2.5/stat.c
48.28KB
fio-2.2.5/stat.h
8.32KB
fio-2.2.5/t/
-
fio-2.2.5/t/axmap.c
2.29KB
fio-2.2.5/t/btrace2fio.c
23.48KB
fio-2.2.5/t/debug.c
187B
fio-2.2.5/t/debug.h
87B
fio-2.2.5/t/dedupe.c
11.67KB
fio-2.2.5/t/genzipf.c
6.93KB
fio-2.2.5/t/ieee754.c
360B
fio-2.2.5/t/jobs/
-
fio-2.2.5/t/jobs/t0001-52c58027.fio
106B
fio-2.2.5/t/jobs/t0002-13af05ae-post
296B
fio-2.2.5/t/jobs/t0002-13af05ae-pre
281B
fio-2.2.5/t/jobs/t0003-0ae2c6e1-post.fio
328B
fio-2.2.5/t/jobs/t0003-0ae2c6e1-pre.fio
248B
fio-2.2.5/t/jobs/t0004-8a99fdf6.fio
369B
fio-2.2.5/t/jobs/t0005-f7078f7b.fio
198B
fio-2.2.5/t/jobs/t0006-82af2a7c.fio
307B
fio-2.2.5/t/jobs/t0007-37cf9e3c.fio
178B
fio-2.2.5/t/jobs/t0008-ae2fafc8.fio
191B
fio-2.2.5/t/jobs/t0009-f8b0bd10.fio
607B
fio-2.2.5/t/lfsr-test.c
3.27KB
fio-2.2.5/t/log.c
593B
fio-2.2.5/t/stest.c
1.33KB
fio-2.2.5/td_error.c
911B
fio-2.2.5/td_error.h
720B
fio-2.2.5/thread_options.h
11.53KB
fio-2.2.5/tickmarks.c
3.16KB
fio-2.2.5/tickmarks.h
239B
fio-2.2.5/time.c
2.09KB
fio-2.2.5/tools/
-
fio-2.2.5/tools/.gitignore
3B
fio-2.2.5/tools/fio_generate_plots
3.9KB
fio-2.2.5/tools/fio_generate_plots.1
1.72KB
fio-2.2.5/tools/genfio
8.33KB
fio-2.2.5/tools/plot/
-
fio-2.2.5/tools/plot/fio2gnuplot
20.76KB
fio-2.2.5/tools/plot/fio2gnuplot.1
4.45KB
fio-2.2.5/tools/plot/fio2gnuplot.manpage
3.95KB
fio-2.2.5/tools/plot/graph2D.gpm
822B
fio-2.2.5/tools/plot/graph3D.gpm
1.52KB
fio-2.2.5/tools/plot/math.gpm
690B
fio-2.2.5/tools/plot/samples/
-
fio-2.2.5/tools/plot/samples/fio-logs.tar.gz
66.49KB
fio-2.2.5/tools/plot/samples/Makefile
503B
fio-2.2.5/trim.c
1.65KB
fio-2.2.5/trim.h
797B
fio-2.2.5/verify.c
34.81KB
fio-2.2.5/verify.h
3.73KB

资源内容介绍

linux fio磁盘性能测试工具
#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <ctype.h>#include <string.h>#include <assert.h>#include <libgen.h>#include <fcntl.h>#include <sys/types.h>#include <sys/stat.h>#include "fio.h"#include "verify.h"#include "parse.h"#include "lib/fls.h"#include "options.h"#include "crc/crc32c.h"/* * Check if mmap/mmaphuge has a :/foo/bar/file at the end. If so, return that. */static char *get_opt_postfix(const char *str){char *p = strstr(str, ":");if (!p)return NULL;p++;strip_blank_front(&p);strip_blank_end(p);return strdup(p);}static int converthexchartoint(char a){int base;switch (a) {case '0'...'9':base = '0';break;case 'A'...'F':base = 'A' - 10;break;case 'a'...'f':base = 'a' - 10;break;default:base = 0;}return a - base;}static int bs_cmp(const void *p1, const void *p2){const struct bssplit *bsp1 = p1;const struct bssplit *bsp2 = p2;return bsp1->perc < bsp2->perc;}static int bssplit_ddir(struct thread_options *o, int ddir, char *str){struct bssplit *bssplit;unsigned int i, perc, perc_missing;unsigned int max_bs, min_bs;long long val;char *fname;o->bssplit_nr[ddir] = 4;bssplit = malloc(4 * sizeof(struct bssplit));i = 0;max_bs = 0;min_bs = -1;while ((fname = strsep(&str, ":")) != NULL) {char *perc_str;if (!strlen(fname))break;/* * grow struct buffer, if needed */if (i == o->bssplit_nr[ddir]) {o->bssplit_nr[ddir] <<= 1;bssplit = realloc(bssplit, o->bssplit_nr[ddir] * sizeof(struct bssplit));}perc_str = strstr(fname, "/");if (perc_str) {*perc_str = '\0';perc_str++;perc = atoi(perc_str);if (perc > 100)perc = 100;else if (!perc)perc = -1U;} elseperc = -1U;if (str_to_decimal(fname, &val, 1, o, 0, 0)) {log_err("fio: bssplit conversion failed\n");free(bssplit);return 1;}if (val > max_bs)max_bs = val;if (val < min_bs)min_bs = val;bssplit[i].bs = val;bssplit[i].perc = perc;i++;}o->bssplit_nr[ddir] = i;/* * Now check if the percentages add up, and how much is missing */perc = perc_missing = 0;for (i = 0; i < o->bssplit_nr[ddir]; i++) {struct bssplit *bsp = &bssplit[i];if (bsp->perc == -1U)perc_missing++;elseperc += bsp->perc;}if (perc > 100 && perc_missing > 1) {log_err("fio: bssplit percentages add to more than 100%%\n");free(bssplit);return 1;}/* * If values didn't have a percentage set, divide the remains between * them. */if (perc_missing) {if (perc_missing == 1 && o->bssplit_nr[ddir] == 1)perc = 100;for (i = 0; i < o->bssplit_nr[ddir]; i++) {struct bssplit *bsp = &bssplit[i];if (bsp->perc == -1U)bsp->perc = (100 - perc) / perc_missing;}}o->min_bs[ddir] = min_bs;o->max_bs[ddir] = max_bs;/* * now sort based on percentages, for ease of lookup */qsort(bssplit, o->bssplit_nr[ddir], sizeof(struct bssplit), bs_cmp);o->bssplit[ddir] = bssplit;return 0;}static int str_bssplit_cb(void *data, const char *input){struct thread_data *td = data;char *str, *p, *odir, *ddir;int ret = 0;if (parse_dryrun())return 0;p = str = strdup(input);strip_blank_front(&str);strip_blank_end(str);odir = strchr(str, ',');if (odir) {ddir = strchr(odir + 1, ',');if (ddir) {ret = bssplit_ddir(&td->o, DDIR_TRIM, ddir + 1);if (!ret)*ddir = '\0';} else {char *op;op = strdup(odir + 1);ret = bssplit_ddir(&td->o, DDIR_TRIM, op);free(op);}if (!ret)ret = bssplit_ddir(&td->o, DDIR_WRITE, odir + 1);if (!ret) {*odir = '\0';ret = bssplit_ddir(&td->o, DDIR_READ, str);}} else {char *op;op = strdup(str);ret = bssplit_ddir(&td->o, DDIR_WRITE, op);free(op);if (!ret) {op = strdup(str);ret = bssplit_ddir(&td->o, DDIR_TRIM, op);free(op);}ret = bssplit_ddir(&td->o, DDIR_READ, str);}free(p);return ret;}static int str2error(char *str){const char *err[] = { "EPERM", "ENOENT", "ESRCH", "EINTR", "EIO", "ENXIO", "E2BIG", "ENOEXEC", "EBADF", "ECHILD", "EAGAIN", "ENOMEM", "EACCES", "EFAULT", "ENOTBLK", "EBUSY", "EEXIST", "EXDEV", "ENODEV", "ENOTDIR", "EISDIR", "EINVAL", "ENFILE", "EMFILE", "ENOTTY", "ETXTBSY","EFBIG", "ENOSPC", "ESPIPE", "EROFS","EMLINK", "EPIPE", "EDOM", "ERANGE" };int i = 0, num = sizeof(err) / sizeof(void *);while (i < num) {if (!strcmp(err[i], str))return i + 1;i++;}return 0;}static int ignore_error_type(struct thread_data *td, int etype, char *str){unsigned int i;int *error;char *fname;if (etype >= ERROR_TYPE_CNT) {log_err("Illegal error type\n");return 1;}td->o.ignore_error_nr[etype] = 4;error = malloc(4 * sizeof(struct bssplit));i = 0;while ((fname = strsep(&str, ":")) != NULL) {if (!strlen(fname))break;/* * grow struct buffer, if needed */if (i == td->o.ignore_error_nr[etype]) {td->o.ignore_error_nr[etype] <<= 1;error = realloc(error, td->o.ignore_error_nr[etype] * sizeof(int));}if (fname[0] == 'E') {error[i] = str2error(fname);} else {error[i] = atoi(fname);if (error[i] < 0)error[i] = -error[i];}if (!error[i]) {log_err("Unknown error %s, please use number value \n", fname);free(error);return 1;}i++;}if (i) {td->o.continue_on_error |= 1 << etype;td->o.ignore_error_nr[etype] = i;td->o.ignore_error[etype] = error;} elsefree(error);return 0;}static int str_ignore_error_cb(void *data, const char *input){struct thread_data *td = data;char *str, *p, *n;int type = 0, ret = 1;if (parse_dryrun())return 0;p = str = strdup(input);strip_blank_front(&str);strip_blank_end(str);while (p) {n = strchr(p, ',');if (n)*n++ = '\0';ret = ignore_error_type(td, type, p);if (ret)break;p = n;type++;}free(str);return ret;}static int str_rw_cb(void *data, const char *str){struct thread_data *td = data;struct thread_options *o = &td->o;char *nr;if (parse_dryrun())return 0;o->ddir_seq_nr = 1;o->ddir_seq_add = 0;nr = get_opt_postfix(str);if (!nr)return 0;if (td_random(td))o->ddir_seq_nr = atoi(nr);else {long long val;if (str_to_decimal(nr, &val, 1, o, 0, 0)) {log_err("fio: rw postfix parsing failed\n");free(nr);return 1;}o->ddir_seq_add = val;}free(nr);return 0;}static int str_mem_cb(void *data, const char *mem){struct thread_data *td = data;if (td->o.mem_type == MEM_MMAPHUGE || td->o.mem_type == MEM_MMAP)td->o.mmapfile = get_opt_postfix(mem);return 0;}static int fio_clock_source_cb(void *data, const char *str){struct thread_data *td = data;fio_clock_source = td->o.clocksource;fio_clock_source_set = 1;fio_clock_init();return 0;}static int str_rwmix_read_cb(void *data, unsigned long long *val){struct thread_data *td = data;td->o.rwmix[DDIR_READ] = *val;td->o.rwmix[DDIR_WRITE] = 100 - *val;return 0;}static int str_rwmix_write_cb(void *data, unsigned long long *val){struct thread_data *td = data;td->o.rwmix[DDIR_WRITE] = *val;td->o.rwmix[DDIR_READ] = 100 - *val;return 0;}static int str_exitall_cb(void){exitall_on_terminate = 1;return 0;}#ifdef FIO_HAVE_CPU_AFFINITYint fio_cpus_split(os_cpu_mask_t *mask, unsigned int cpu_index){unsigned int i, index, cpus_in_mask;const long max_cpu = cpus_online();cpus_in_mask = fio_cpu_count(mask);cpu_index = cpu_index % cpus_in_mask;index = 0;for (i = 0; i < max_cpu; i++) {if (!fio_cpu_isset(mask, i))continue;if (cpu_index != index)fio_cpu_clear(mask, i);index++;}return fio_cpu_count(mask);}static int str_cpumask_cb(void *data, unsigned long long *val){struct thread_data *td = data;unsigned int i;long max_cpu;int ret;if (parse_dry

用户评论 (0)

发表评论

captcha