On 22/01/2019 11:59, Marc Gonzalez wrote:
> 4GB RAM. And the system hangs after reading 3.8GB
> I think this is not a coincidence.
> NB: swap is disabled (this might be relevant)
>
> On a freshly booted system, I get
>
> # free
> random: get_random_u64 called from copy_process.isra.9.part.10+0x2c8/0x1700
> with crng_init=1
> random: get_random_u64 called from arch_pick_mmap_layout+0xdc/0x100 with
> crng_init=1
> random: get_random_u64 called from load_elf_binary+0x2b8/0x12b4 with
> crng_init=1
> total used free shared buffers cached
> Mem: 3948996 48916 3900080 17124 0 17124
> -/+ buffers/cache: 31792 3917204
> Swap: 0 0 0
When using iflag=direct, 'buffers' doesn't grow
# dd if=/dev/sde of=/dev/null bs=1M iflag=direct & while true; do free; sleep
5; done
total used free shared buffers cached
Mem: 3948996 49060 3899936 17124 0 17124
-/+ buffers/cache: 31936 3917060
Swap: 0 0 0
total used free shared buffers cached
Mem: 3948996 50084 3898912 17124 0 17124
-/+ buffers/cache: 32960 3916036
Swap: 0 0 0
total used free shared buffers cached
Mem: 3948996 49832 3899164 17124 0 17124
-/+ buffers/cache: 32708 3916288
Swap: 0 0 0
total used free shared buffers cached
Mem: 3948996 49832 3899164 17124 0 17124
-/+ buffers/cache: 32708 3916288
Swap: 0 0 0
total used free shared buffers cached
Mem: 3948996 49832 3899164 17124 0 17124
-/+ buffers/cache: 32708 3916288
Swap: 0 0 0
total used free shared buffers cached
Mem: 3948996 49832 3899164 17124 0 17124
-/+ buffers/cache: 32708 3916288
Swap: 0 0 0
total used free shared buffers cached
Mem: 3948996 49832 3899164 17124 0 17124
-/+ buffers/cache: 32708 3916288
Swap: 0 0 0
total used free shared buffers cached
Mem: 3948996 50084 3898912 17124 0 17124
-/+ buffers/cache: 32960 3916036
Swap: 0 0 0
total used free shared buffers cached
Mem: 3948996 49832 3899164 17124 0 17124
-/+ buffers/cache: 32708 3916288
Swap: 0 0 0
total used free shared buffers cached
Mem: 3948996 50084 3898912 17124 0 17124
-/+ buffers/cache: 32960 3916036
Swap: 0 0 0
total used free shared buffers cached
Mem: 3948996 50084 3898912 17124 0 17124
-/+ buffers/cache: 32960 3916036
Swap: 0 0 0
4096+0 records in
4096+0 records out
4294967296 bytes (4.3 GB, 4.0 GiB) copied, 53.3547 s, 80.5 MB/s
total used free shared buffers cached
Mem: 3948996 49188 3899808 17124 0 17124
-/+ buffers/cache: 32064 3916932
Swap: 0 0 0
But when using "normal" I/O, the kernel seems to consume all RAM, until
the system locks up.
# dd if=/dev/sde of=/dev/null bs=1M & while true; do free; sleep 5; done
total used free shared buffers cached
Mem: 3948996 49076 3899920 17124 0 17124
-/+ buffers/cache: 31952 3917044
Swap: 0 0 0
total used free shared buffers cached
Mem: 3948996 239816 3709180 17124 190464 17004
-/+ buffers/cache: 32348 3916648
Swap: 0 0 0
total used free shared buffers cached
Mem: 3948996 430760 3518236 17124 380928 16880
-/+ buffers/cache: 32952 3916044
Swap: 0 0 0
total used free shared buffers cached
Mem: 3948996 733716 3215280 17124 685056 17124
-/+ buffers/cache: 31536 3917460
Swap: 0 0 0
total used free shared buffers cached
Mem: 3948996 1037056 2911940 17124 987648 16936
-/+ buffers/cache: 32472 3916524
Swap: 0 0 0
total used free shared buffers cached
Mem: 3948996 1335576 2613420 17124 1285632 17124
-/+ buffers/cache: 32820 3916176
Swap: 0 0 0
total used free shared buffers cached
Mem: 3948996 1565188 2383808 17124 1514036 17172
-/+ buffers/cache: 33980 3915016
Swap: 0 0 0
total used free shared buffers cached
Mem: 3948996 1753352 2195644 17124 1702400 17004
-/+ buffers/cache: 33948 3915048
Swap: 0 0 0
total used free shared buffers cached
Mem: 3948996 1942784 2006212 17124 1891328 17152
-/+ buffers/cache: 34304 3914692
Swap: 0 0 0
total used free shared buffers cached
Mem: 3948996 2226024 1722972 17124 2175088 17204
-/+ buffers/cache: 33732 3915264
Swap: 0 0 0
total used free shared buffers cached
Mem: 3948996 2452092 1496904 17124 2400608 17136
-/+ buffers/cache: 34348 3914648
Swap: 0 0 0
total used free shared buffers cached
Mem: 3948996 2679096 1269900 17124 2626400 17100
-/+ buffers/cache: 35596 3913400
Swap: 0 0 0
total used free shared buffers cached
Mem: 3948996 2870828 1078168 17124 2816864 17004
-/+ buffers/cache: 36960 3912036
Swap: 0 0 0
total used free shared buffers cached
Mem: 3948996 3144360 804636 17124 3089760 17044
-/+ buffers/cache: 37556 3911440
Swap: 0 0 0
total used free shared buffers cached
Mem: 3948996 3388840 560156 17124 3333472 17088
-/+ buffers/cache: 38280 3910716
Swap: 0 0 0
total used free shared buffers cached
Mem: 3948996 3577752 371244 17124 3521888 17040
-/+ buffers/cache: 38824 3910172
Swap: 0 0 0
total used free shared buffers cached
Mem: 3948996 3754844 194152 17124 3699040 17056
-/+ buffers/cache: 38748 3910248
Swap: 0 0 0
rcu: INFO: rcu_preempt detected stalls on CPUs/tasks:
rcu: 3-...0: (0 ticks this GP) idle=be2/1/0x4000000000000000 softirq=275/275
fqs=68
rcu: 4-...0: (709 ticks this GP) idle=386/1/0x4000000000000000
softirq=248/250 fqs=68
rcu: (detected by 6, t=2018 jiffies, g=505, q=8)
Task dump for CPU 3:
sh R running task 0 671 1 0x00000002
Call trace:
__switch_to+0x174/0x1e0
__kmalloc+0x37c/0x3d0
0x100000000
Task dump for CPU 4:
dd R running task 0 707 671 0x00000002
Call trace:
__switch_to+0x174/0x1e0
__cpu_online_mask+0x0/0x8
rcu: INFO: rcu_preempt detected stalls on CPUs/tasks:
rcu: 3-...0: (0 ticks this GP) idle=be2/1/0x4000000000000000 softirq=275/275
fqs=250
rcu: 4-...0: (709 ticks this GP) idle=386/1/0x4000000000000000
softirq=248/250 fqs=250
rcu: (detected by 6, t=8024 jiffies, g=505, q=8)
Task dump for CPU 3:
sh R running task 0 671 1 0x00000002
Call trace:
__switch_to+0x174/0x1e0
__kmalloc+0x37c/0x3d0
0x100000000
Task dump for CPU 4:
dd R running task 0 707 671 0x00000002
Call trace:
__switch_to+0x174/0x1e0
__cpu_online_mask+0x0/0x8
Calling 'echo 3 > /proc/sys/vm/drop_caches' while dd is running does not seem
to free any of the buffers. Could they be considered dirty?
total used free shared buffers cached
Mem: 3948996 3067664 881332 17124 3011584 17176
-/+ buffers/cache: 38904 3910092
Swap: 0 0 0
# echo 3 > /proc/sys/vm/drop_caches
total used free shared buffers cached
Mem: 3948996 3256876 692120 17124 3200512 17076
-/+ buffers/cache: 39288 3909708
Swap: 0 0 0
Calling 'sync' has no effect either.
Regards.