I am using the attached stess.sh script (probably from this mailinglist) for creating load on a reiserfs filesystem, which forks 100 (read,write,delete) processes:
# mkreiserfs /dev/sda4
# mount /dev/sda4 /backup
# stress.sh -c /usr -n 100 /backup
Then wait until /backup fills up.
# mount |grep sda
/dev/sda3 on / type ext3 (rw,errors=remount-ro)
/dev/sda2 on /boot type ext3 (rw,errors=remount-ro)
/dev/sda4 on /backup type reiserfs (rw)
# df -k / /boot /backup
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/sda3 4134932 3355468 569416 86% /
/dev/sda2 132221 72896 52498 59% /boot
/dev/sda4 12530312 12530312 0 100% /backup
# gcc -v
Reading specs from /usr/lib/gcc-lib/i386-linux/2.95.4/specs
gcc version 2.95.4 20011002 (Debian prerelease)
# uname -a
Linux dematl06 2.4.20-p4-debug #1 SMP Wed Jan 15 00:48:49 CET 2003 i686 unknown
The Machine is Debian woody box with 2 x 2.40 GHz Intel Xeon (4 virtual
CPUs).
# uptime
03:04:18 up 1:02, 1 user, load average: 100.99, 100.83, 89.56
This happens on reiserfs:
# iostat 1
avg-cpu: %user %nice %sys %idle
0.00 0.00 0.00 100.00
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
dev8-0 0.00 0.00 0.00 0 0
dev8-1 0.00 0.00 0.00 0 0
# vmstat 1
procs memory swap io system cpu
r b w swpd free buff cache si so bi bo in cs us sy id
0 100 1 4932 8404 117916 1559292 0 1 206 950 81 211 0 6 94
0 100 1 4932 8404 117916 1559292 0 0 0 0 107 6 0 0 100
0 100 1 4932 8404 117916 1559292 0 0 0 0 106 10 0 0 100
0 100 1 4932 8404 117916 1559292 0 0 0 0 105 6 0 0 10
...
Any I/O freezes and even after killing the script, the remaining cp and
mv commands don't terminate. They are in status "D". A simle "ls
/backup" never comes back. Only a hard powerdown fixes this situation,
because "init 6" etc. doesn't work. I have even activated the reiserfs
debug, but I don't see any additional info.
# ls -l /backup &
[2] 1432
# ps ax|grep ls
1432 pts/0 D 0:00 ls -l /backup
1445 pts/0 S 0:00 grep ls
# kill -9 1432
# ps ax|grep ls
1432 pts/0 D 0:00 ls -l /backup
1450 pts/0 S 0:00 grep ls
If I use the jfs Filesystem, the same thing happens.
If I use ext3, everything is fine, and the cp/mv/rm processes proceed
even with full filesystem /backup and load = 100. iostat and vmstat
still show I/O on filesystem /backup.
The Kernel is a Standard 2.4.20 Kernel only with one additional patch
for the SK9Dxx Gigabit Ethernet Adapter from Syskonnect. During the
Tests this module (sk9dlin) is not loaded.
I used several kernels.... 2.4.19, 2.4.20, 2.4.20-ac2, 2.4.21-pre3. All
with same results.
Is something wrong? What is wrong?
# lsmod
Module Size Used by Not tainted
reiserfs 250656 1 (autoclean)
nfs 67676 1 (autoclean)
lockd 47680 1 (autoclean) [nfs]
sunrpc 64692 1 (autoclean) [nfs lockd]
eepro100 18380 1 (autoclean)
mii 2400 0 (autoclean) [eepro100]
md 57344 0 (autoclean)
lvm-mod 59360 0
rtc 6492 0 (autoclean)
unix 15716 62 (autoclean)
# dmesg | tail -9
reiserfs:warning: CONFIG_REISERFS_CHECK is set ON
reiserfs:warning: - it is slow mode for debugging.
reiserfs: checking transaction log (device 08:04) ...
journal-1153: found in header: first_unflushed_offset 6,
last_flushed_trans_id 11
journal-1206: Starting replay from offset 6, trans_id 12
journal-1299: Setting newest_mount_id to 11
Using r5 hash to sort names
ReiserFS version 3.6.25
vs-8301: reiserfs_kmalloc: allocated memory 200904
# lspci
00:00.0 Host bridge: Intel Corp. e7500 [Plumas] DRAM Controller (rev 03)
00:00.1 Class ff00: Intel Corp. e7500 [Plumas] DRAM Controller Error Reporting (rev 03)
00:02.0 PCI bridge: Intel Corp. e7500 [Plumas] HI_B Virtual PCI Bridge (F0) (rev 03)
00:1d.0 USB Controller: Intel Corp. 82801CA/CAM USB (Hub (rev 02)
00:1d.1 USB Controller: Intel Corp. 82801CA/CAM USB (Hub (rev 02)
00:1d.2 USB Controller: Intel Corp. 82801CA/CAM USB (Hub (rev 02)
00:1e.0 PCI bridge: Intel Corp. 82801BA/CA/DB PCI Bridge (rev 42)
00:1f.0 ISA bridge: Intel Corp. 82801CA ISA Bridge (LPC) (rev 02)
00:1f.1 IDE interface: Intel Corp. 82801CA IDE U100 (rev 02)
00:1f.3 SMBus: Intel Corp. 82801CA/CAM SMBus (rev 02)
01:1c.0 PIC: Intel Corp. 82870P2 P64H2 I/OxAPIC (rev 03)
01:1d.0 PCI bridge: Intel Corp. 82870P2 P64H2 Hub PCI Bridge (rev 03)
01:1e.0 PIC: Intel Corp. 82870P2 P64H2 I/OxAPIC (rev 03)
01:1f.0 PCI bridge: Intel Corp. 82870P2 P64H2 Hub PCI Bridge (rev 03)
03:01.0 Ethernet controller: Syskonnect (Schneider & Koch) Gigabit Ethernet (rev 10)
03:02.0 SCSI storage controller: Adaptec AIC-7899P U160/m (rev 01)
03:02.1 SCSI storage controller: Adaptec AIC-7899P U160/m (rev 01)
03:04.0 Ethernet controller: Intel Corp. 82544GC Gigabit Ethernet Controller (LOM)
(rev 02)
04:01.0 VGA compatible controller: ATI Technologies Inc Rage XL (rev 27)
04:02.0 Ethernet controller: Intel Corp. 82557/8/9 [Ethernet Pro 100] (rev 0d)
# cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 15
model : 2
model name : Intel(R) Xeon(TM) CPU 2.40GHz
stepping : 7
cpu MHz : 2395.954
cache size : 512 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 2
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
bogomips : 4784.12
same for processor 1, 2, 3...
Bernhard
stress.sh
Description: Bourne shell script
