msdosfs performance unbearable

Dominic Fandrey LoN_Kamikaze at gmx.de
Wed Nov 28 01:04:04 PST 2007


Alfred Perlstein wrote:
> * Dominic Fandrey <LoN_Kamikaze at gmx.de> [071127 00:47] wrote:
>> ufs:
>> $ time -h tar -xf php_manual_en.tar.gz
>> 	3.31s real		0.43s user		0.51s sys
>>
>>
>> msdosfs:
>> I stopped that after 45 minutes.
>>
>> Also the system becomes barely responsive. The mouse moves extremely sloppy
>> and a key-press often causes 2 characters to be printed. Mouse-clicks are
>> either lost or take more than 10 seconds to be recognized.
> 
> Which version of FreeBSD?  can you get more information about the 
> FAT system?

Csupped and build yesterday:
$ uname -a
FreeBSD mobileKamikaze.norad 7.0-BETA3 FreeBSD 7.0-BETA3 #0: Tue Nov 27
20:53:17 CET 2007
root at homeKamikaze.norad:/usr/obj/TPR40-7/i386/usr/src/sys/TPR40-7  i386

Partition information:
/dev/ad0s3 on /mnt/msdos/software (msdosfs, local)
/dev/ad0s4 on /mnt/msdos/vault (msdosfs, local)

Actually I don't know any way of aquiring (<= how is this spelled?) useful
data about Fat32 partitions in FreeBSD.

Anyway:
mobileKamikaze$ strace -o ~/msdos.trace tar -xf php_manual_en.tar.gz
^C

And here is the beginning of the trace:
execve(0xbfbfe608, [0xbfbfeaf4], [/* 0 vars */]) = 0
__sysctl([...], 0xbfbfe86c, 0xbfbfe870, NULL, 0) = 0
syscall_477(0, 0x110, 0x3, 0x1000, 0xffffffff, 0, 0) = 0x28080000
munmap(0x28080000, 272)                 = 0
__sysctl([...], 0x2807c87c, 0xbfbfe8d0, NULL, 0) = 0
syscall_477(0, 0x8000, 0x3, 0x1002, 0xffffffff, 0, 0) = 0x28080000
issetugid(0x2807598c)                   = 0
open("/etc/libmap.conf", O_RDONLY)      = 3
fstat(3, {st_mode=S_IFDIR|0543, st_size=18446253021508551011, ...}) = 0
read(3, "", 4096)                       = 0
close(3)                                = 0
open("/var/run/ld-elf.so.hints", O_RDONLY) = 3
read(3, "f/rtld.c:3297\n\0\0%s: Unexpected  "..., 128) = 128
syscall_478(0x3, 0x80, 0, 0)            = 0x80
read(3, "/lib:/usr/lib:/usr/lib/compat:/u"..., 274) = 274
close(3)                                = 0
access("/lib/libarchive.so.4", F_OK)    = -1 ENOENT (No such file or directory)
access("/usr/lib/libarchive.so.4", F_OK) = 0
open("/usr/lib/libarchive.so.4", O_RDONLY) = 3
fstat(3, {st_mode=0, st_size=0, ...})   = 0
read(3, "\177ELF\1\1\1\t\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0pP\0\000"..., 4096) = 4096
syscall_477(0, 0x25000, 0x5, 0x20002, 0x3, 0, 0) = 0x28088000
mprotect(0x280aa000, 4096, PROT_READ|PROT_WRITE|PROT_EXEC) = 0
mprotect(0x280aa000, 4096, PROT_READ|PROT_EXEC) = 0
syscall_477(0x280ab000, 0x1000, 0x3, 0x12, 0x3, 0x22000, 0) = 0x280ab000
syscall_477(0x280ac000, 0x1000, 0x3, 0x1012, 0xffffffff, 0, 0) = 0x280ac000
close(3)                                = 0
access("/lib/libbz2.so.3", F_OK)        = -1 ENOENT (No such file or directory)
access("/usr/lib/libbz2.so.3", F_OK)    = 0
open("/usr/lib/libbz2.so.3", O_RDONLY)  = 3
fstat(3, {st_mode=0, st_size=0, ...})   = 0
read(3, "\177ELF\1\1\1\t\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0p\21\0\000"..., 4096)
= 4096
syscall_477(0, 0x11000, 0x5, 0x20002, 0x3, 0, 0) = 0x280ad000
mprotect(0x280bc000, 4096, PROT_READ|PROT_WRITE|PROT_EXEC) = 0
mprotect(0x280bc000, 4096, PROT_READ|PROT_EXEC) = 0
syscall_477(0x280bd000, 0x1000, 0x3, 0x12, 0x3, 0xf000, 0) = 0x280bd000
close(3)                                = 0
access("/lib/libz.so.4", F_OK)          = 0
open("/lib/libz.so.4", O_RDONLY)        = 3
fstat(3, {st_mode=0, st_size=0, ...})   = 0
read(3, "\177ELF\1\1\1\t\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\300\27"..., 4096) = 4096
syscall_477(0, 0x12000, 0x5, 0x20002, 0x3, 0, 0) = 0x280be000
mprotect(0x280ce000, 4096, PROT_READ|PROT_WRITE|PROT_EXEC) = 0
mprotect(0x280ce000, 4096, PROT_READ|PROT_EXEC) = 0
syscall_477(0x280cf000, 0x1000, 0x3, 0x12, 0x3, 0x11000, 0) = 0x280cf000
close(3)                                = 0
access("/lib/libc.so.7", F_OK)          = 0
open("/lib/libc.so.7", O_RDONLY)        = 3
fstat(3, {st_mode=0, st_size=0, ...})   = 0
read(3, "\177ELF\1\1\1\t\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\0\327\1"..., 4096) = 4096
syscall_477(0, 0xfd000, 0x5, 0x20002, 0x3, 0, 0) = 0x280d0000
mprotect(0x281b2000, 4096, PROT_READ|PROT_WRITE|PROT_EXEC) = 0
mprotect(0x281b2000, 4096, PROT_READ|PROT_EXEC) = 0
syscall_477(0x281b3000, 0x6000, 0x3, 0x12, 0x3, 0xe2000, 0) = 0x281b3000
syscall_477(0x281b9000, 0x14000, 0x3, 0x1012, 0xffffffff, 0, 0) = 0x281b9000
close(3)                                = 0
syscall_477(0, 0x9000, 0x3, 0x1002, 0xffffffff, 0, 0) = 0x281cd000
sysarch(0xa, 0xbfbfe930)                = 0
syscall_477(0, 0x4b0, 0x3, 0x1000, 0xffffffff, 0, 0) = 0x281d6000
munmap(0x281d6000, 1200)                = 0
syscall_477(0, 0xa18, 0x3, 0x1000, 0xffffffff, 0, 0) = 0x281d6000
munmap(0x281d6000, 2584)                = 0
syscall_477(0, 0x2b8, 0x3, 0x1000, 0xffffffff, 0, 0) = 0x281d6000
munmap(0x281d6000, 696)                 = 0
syscall_477(0, 0x408, 0x3, 0x1000, 0xffffffff, 0, 0) = 0x281d6000
munmap(0x281d6000, 1032)                = 0
syscall_477(0, 0x51c8, 0x3, 0x1000, 0xffffffff, 0, 0) = 0x281d6000
munmap(0x281d6000, 20936)               = 0
__sysctl([1025732.0], 2,
"i7\350!\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., [2097204], NULL,
0) = 0
sigprocmask(SIG_BLOCK, ~[ILL TRAP ABRT EMT FPE BUS SEGV SYS], []) = 0
sigprocmask(SIG_SETMASK, [], NULL)      = 0
open("", O_RDONLY)                      = 3
fstat(3, {st_mode=0, st_size=130023424, ...}) = 0
__sysctl([127795200.78970880], 2,
"\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., [19136512], NULL,
0) = 0
__sysctl([sysctl.0], 2, "", [0], NULL, 0) = 0
__sysctl([4096.0], 2, "", [0], NULL, 0) = 0
readlink("/etc/malloc.conf", 0xbfbfdf7b, 1024) = -1 ENOENT (No such file or
directory)
issetugid(0x281aa366)                   = 0
break(0x8100000)                        = 0
__sysctl([181832331.185240637], 2, "ena\n\0\0\0\0: (malloc) Unsupported c"...,
[1918967911], NULL, 0) = 0
syscall_477(0, 0x200000, 0x3, 0x1002, 0xffffffff, 0, 0) = 0x281d6000
munmap(0x281d6000, 172032)              = 0
munmap(0x28300000, 876544)              = 0
read(3, "1.2\n\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0"..., 4096) = 4096
read(3, "\0\277\0\0\0\0\0\0\0\300\0\0\0\0\0\0\0\301\0\0\0\0\0\0"..., 4096) = 546
close(3)                                = 0
open("", O_RDONLY)                      = 3
fstat(3, {st_mode=0, st_size=24206847997116416, ...}) = 0
fstat(3, {st_mode=0133, st_size=95, ...}) = 0
syscall_478(0x3, 0, 0, 0x1)             = 0
syscall_478(0x3, 0, 0, 0)               = 0
read(3, "RuneMag1UTF-8\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4096) = 4096
read(3, "@\4\10\0\0\0\n\274\0\0\n\305@\4\10\0\0\0\n\307\0\0\n\311"..., 4096) =
4096
read(3, "\0\0\1J\0\0\1J\0\0\1K\0\0\1L\0\0\1L\0\0\1M\0\0\1N\0\0\1"..., 4096) = 4096
read(3, "\0\0\37\17\0\0\37\0\0\0\37\30\0\0\37\35\0\0\37\20\0\0\37"..., 4096) =
4096
read(3, "\0\0\36T\0\0\36W\0\0\36W\0\0\36V\0\0\36Y\0\0\36Y\0\0\36"..., 4096) = 4096
read(3, "@\4\211\0@\4\31\0@\4\211\0@\4\31\0@\4\211\0@\4\31\0@\4"..., 4096) = 4096
read(3, "@$\10\0@$\10\0@$\10\0@$\10\0@$\10\0@$\10\0@$\10\0@$\10"..., 4096) = 4096
read(3, "@\4(\0@\4(\0@\4(\0@\4(\0@\4(\0@\4(\0@\4(\0@\4(\0"..., 4096) = 4096
read(3, "\200$\10\0\200$\10\0\200$\10\0\200$\10\0\200$\10\0\200"..., 4096) = 4096
read(3, "@\4\0\0@\4\0\0@\4\0\0@\4\0\0@\4\0\0@\4\0\0@\4\0\0@\4\0"..., 4096) = 4096
read(3, "@\4\0\0@\4\0\0@\4\0\0@\4\0\0@\4\0\0@\4\0\0@\4\0\0@\4\0"..., 4096) = 4096
read(3, "@\4\10\0@\4\10\0@\4\10\0@\4\10\0@\4\10\0@\4\10\0@\4\10"..., 4096) = 4096
read(3, "@\4\10\0@\4\10\0@\4\10\0@\4\10\0@\4\10\0@\4\10\0@\4\10"..., 4096) = 4096
read(3, "@\4\10\0@\4\10\0@\4\10\0@\4\10\0@\4\10\0@\4\10\0@\4\10"..., 4096) = 4096
read(3, "@\4\10\0@\4\10\0@\4\10\0@\4\10\0@\4\10\0@\4\10\0@\4\10"..., 4096) = 4096
read(3, "@\4\10\0@\4\10\0@\4\10\0@\4\10\0@\4\10\0@\4\10\0@\4\10"..., 4096) = 4096
read(3, "@\4\10\0@\4\10\0@\4\10\0@\4\10\0@\4\10\0@\4\10\0@\4\10"..., 4096) = 4096
read(3, "@\4\10\0@\4\10\0@\4\10\0@\4\10\0@\4\10\0@\4\10\0@\4\10"..., 4096) = 4096
read(3, "@\4\211\0@\4\211\0@\4\211\0@\4\211\0@\4\211\0@\4\211\0"..., 4096) = 2404
close(3)                                = 0
open("@�", O_RDONLY)                   = 3
fstat(3, {st_mode=S_ISGID|0100, st_size=38566744742757440, ...}) = 0
read(3, "GBP \n\302\243\n.\n,\n3;3\n\n-\n2\n2\n1\n0\n1\n0\n1"..., 35) = 35
close(3)                                = 0
open("", O_RDONLY)                      = 3
fstat(3, {st_mode=S_ISGID|0100, st_size=38566744742757440, ...}) = 0
read(3, ".\n,\n3;3\n", 8)               = 8
close(3)                                = 0
open("", O_RDONLY)                      = 3
fstat(3, {st_mode=0, st_size=0, ...})   = 0
read(3, "Jan\nFeb\nMar\nApr\nMay\nJun\nJul\nAug\n"..., 377) = 377
close(3)                                = 0
open("Sep", O_RDONLY)                   = 3
fstat(3, {st_mode=030, st_size=150323855394, ...}) = 0
read(3, "^[yY].*\n^[nN].*\n", 16)       = 16
close(3)                                = 0
geteuid(0x39)                           = 1001
open("php_manual_en.tar.gz", O_RDONLY)  = 3
fstat(3, {st_mode=S_ISGID|0100, st_size=38566744742757440, ...}) = 0
read(3, "\37\213\10\0\322\360IG\0\3\354\375\5\\]K\226(\16\37\202"..., 10240) =
10240
read(3, "\235\r\242\5\302\310\344\17\5\7a\261\35\374\227\236\335"..., 10240) =
10240
read(3, "\327\263h\332`\223`\335\370\274\330\323q\233p\'\234\215"..., 10240) =
10240
read(3, "\215*S\231\245\17hY\340\310-2h\317\2704\3312#\244\377\314"..., 10240)
= 10240
geteuid(0x28263140)                     = 1001
umask(0)                                = 022
lstat("html", 0xbfbfe7ec)               = -1 ENOENT (No such file or directory)
mkdir("html", 0755)                     = 0
umask(022)                              = 0
umask(0)                                = 022
lstat("html", {st_mode=0, st_size=0, ...}) = 0
mkdir("html/figures", 0755)             = 0
umask(022)                              = 0
umask(0)                                = 022
lstat("html/figures", {st_mode=0, st_size=0, ...}) = 0
open("html/figures/image.imagearc.png", O_WRONLY|O_CREAT|O_EXCL, 0644) = 4
umask(022)                              = 0
write(4, "\211PNG\r\n\32\n\0\0\0\rIHDR\0\0\0\310\0\0\0\310\10\2\0"..., 1696) =
1696
futimes(0x4, 0xbfbfe834)                = 0
close(4)                                = 0
umask(0)                                = 022
lstat("html/figures/image.imagechar.png", 0xbfbfe7ec) = -1 ENOENT (No such
file or directory)
open("html/figures/image.imagechar.png", O_WRONLY|O_CREAT|O_EXCL, 0644) = 4
umask(022)                              = 0
write(4, "\211PNG\r\n\32\n\0\0\0\rIHDR\0\0\0d\0\0\0d\1\3\0\0\0J,"..., 107) = 107
futimes(0x4, 0xbfbfe834)                = 0
close(4)                                = 0
umask(0)                                = 022
lstat("html/figures/image.imagecharup.png", 0xbfbfe7ec) = -1 ENOENT (No such
file or directory)
open("html/figures/image.imagecharup.png", O_WRONLY|O_CREAT|O_EXCL, 0644) = 4
umask(022)                              = 0
write(4, "\211PNG\r\n\32\n\0\0\0\rIHDR\0\0\0d\0\0\0d\1\3\0\0\0J,"..., 108) = 108
futimes(0x4, 0xbfbfe834)                = 0
close(4)                                = 0
umask(0)                                = 022
lstat("html/figures/image.imagecolorallocatealpha.png", 0xbfbfe7ec) = -1
ENOENT (No such file or directory)
open("html/figures/image.imagecolorallocatealpha.png",
O_WRONLY|O_CREAT|O_EXCL, 0644) = 4
umask(022)                              = 0
write(4, "\211PNG\r\n\32\n\0\0\0\rIHDR\0\0\1,\0\0\1,\10\2\0\0\0\366"..., 2859)
= 2859
futimes(0x4, 0xbfbfe834)                = 0
close(4)                                = 0

...

umask(0)                                = 022
lstat("html/function.fbsql-blob-size.html", 0xbfbfe7ec) = -1 ENOENT (No such
file or directory)
open("html/function.fbsql-blob-size.html", O_WRONLY|O_CREAT|O_EXCL, 0644) = 4
umask(022)                              = 0
write(4, "<!DOCTYPE HTML PUBLIC \"-//W3C//D"..., 3072) = 3072
write(4, "l\">fbsql_change_user</a></div>\n "..., 175) = 175
futimes(0x4, 0xbfbfe834)                = 0
close(4)                                = 0
umask(0)                                = 022
lstat("html/function.fbsql-change-user.html", 0xbfbfe7ec) = -1 ENOENT (No such
file or directory)
--- SIGINT (Interrupt: 2) ---
--- SIGINT (Interrupt: 2) ---



More information about the freebsd-stable mailing list