All of lore.kernel.org
 help / color / mirror / Atom feed
* Using FIO on systems with <=512MB RAM
@ 2022-02-21 14:40 Philippe Schenker
  2022-02-21 23:41 ` Damien Le Moal
  2022-02-28 22:41 ` Volodymyr Hoida
  0 siblings, 2 replies; 6+ messages in thread
From: Philippe Schenker @ 2022-02-21 14:40 UTC (permalink / raw)
  To: fio

Hello

We use FIO to check the eMMC storage on our embedded boards. This works
great for our modules that have >= 1GB RAM but on all lower-memory ones
(<= 512MB) the OOM killer always kills FIO.

I can hook up a swap which helps but is just painfully slow.

I played with the settings mem, bs, iodepth and size but cannot achieve
a configuration that works on low-memory embedded systems.

Can anyone guide me how I can make this work?

Best Regards,
Philippe


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Using FIO on systems with <=512MB RAM
  2022-02-21 14:40 Using FIO on systems with <=512MB RAM Philippe Schenker
@ 2022-02-21 23:41 ` Damien Le Moal
  2022-02-22 14:00   ` Philippe Schenker
  2022-02-28 22:41 ` Volodymyr Hoida
  1 sibling, 1 reply; 6+ messages in thread
From: Damien Le Moal @ 2022-02-21 23:41 UTC (permalink / raw)
  To: Philippe Schenker, fio

On 2/21/22 23:40, Philippe Schenker wrote:
> Hello
> 
> We use FIO to check the eMMC storage on our embedded boards. This works
> great for our modules that have >= 1GB RAM but on all lower-memory ones
> (<= 512MB) the OOM killer always kills FIO.
> 
> I can hook up a swap which helps but is just painfully slow.

Well yes, your system will be trashing...

> 
> I played with the settings mem, bs, iodepth and size but cannot achieve
> a configuration that works on low-memory embedded systems.
> 
> Can anyone guide me how I can make this work?

See if playing with option "--alloc-size=" helps. You can also reduce
the maximum number of jobs with "--max-jobs=". Also try using threads
instead of (default) processes for jobs (--thread option). And of course
make sure that the total amount of IO buffers you need (num jobs * io
depth per job * bs) is not too large for your RAM size.

> 
> Best Regards,
> Philippe
> 


-- 
Damien Le Moal
Western Digital Research

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Using FIO on systems with <=512MB RAM
  2022-02-21 23:41 ` Damien Le Moal
@ 2022-02-22 14:00   ` Philippe Schenker
  2022-02-22 14:34     ` Philippe Schenker
  0 siblings, 1 reply; 6+ messages in thread
From: Philippe Schenker @ 2022-02-22 14:00 UTC (permalink / raw)
  To: fio, damien.lemoal

On Tue, 2022-02-22 at 08:41 +0900, Damien Le Moal wrote:
> On 2/21/22 23:40, Philippe Schenker wrote:
> > Hello
> > 
> > We use FIO to check the eMMC storage on our embedded boards. This
> > works
> > great for our modules that have >= 1GB RAM but on all lower-memory
> > ones
> > (<= 512MB) the OOM killer always kills FIO.
> > 
> > I can hook up a swap which helps but is just painfully slow.
> 
> Well yes, your system will be trashing...
> 
> > 
> > I played with the settings mem, bs, iodepth and size but cannot
> > achieve
> > a configuration that works on low-memory embedded systems.
> > 
> > Can anyone guide me how I can make this work?
> 
> See if playing with option "--alloc-size=" helps. You can also reduce
> the maximum number of jobs with "--max-jobs=". Also try using threads
> instead of (default) processes for jobs (--thread option). And of
> course
> make sure that the total amount of IO buffers you need (num jobs * io
> depth per job * bs) is not too large for your RAM size.

Thank you very much for your help on this topic. I tried those
parameters back and forth, however it seems to always reserve ~400MB on
the biggest chunk (checked in /proc/<pid-of-fio>/smaps).

decreasing the max allowed shared memory in /proc/sys/kernel/shmmax to
~64M does solve our issue and fio works also on 256MB ram.

However this leads to the question if this is not a bug? I mean it seems
to reserve this memory despite it's not needing it?
What leads me to this assumption is that I can also set mem=malloc
instead of mem=shm and I get still the same error.

We use fio 3.17 is this maybe solved in newer versions?

Best Regards,
Philippe

> 
> > 
> > Best Regards,
> > Philippe
> > 
> 
> 


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Using FIO on systems with <=512MB RAM
  2022-02-22 14:00   ` Philippe Schenker
@ 2022-02-22 14:34     ` Philippe Schenker
  0 siblings, 0 replies; 6+ messages in thread
From: Philippe Schenker @ 2022-02-22 14:34 UTC (permalink / raw)
  To: fio, damien.lemoal; +Cc: Francesco Dolcini

On Tue, 2022-02-22 at 15:00 +0100, Philippe Schenker wrote:
> On Tue, 2022-02-22 at 08:41 +0900, Damien Le Moal wrote:
> > On 2/21/22 23:40, Philippe Schenker wrote:
> > > Hello
> > > 
> > > We use FIO to check the eMMC storage on our embedded boards. This
> > > works
> > > great for our modules that have >= 1GB RAM but on all lower-memory
> > > ones
> > > (<= 512MB) the OOM killer always kills FIO.
> > > 
> > > I can hook up a swap which helps but is just painfully slow.
> > 
> > Well yes, your system will be trashing...
> > 
> > > 
> > > I played with the settings mem, bs, iodepth and size but cannot
> > > achieve
> > > a configuration that works on low-memory embedded systems.
> > > 
> > > Can anyone guide me how I can make this work?
> > 
> > See if playing with option "--alloc-size=" helps. You can also
> > reduce
> > the maximum number of jobs with "--max-jobs=". Also try using
> > threads
> > instead of (default) processes for jobs (--thread option). And of
> > course
> > make sure that the total amount of IO buffers you need (num jobs *
> > io
> > depth per job * bs) is not too large for your RAM size.
> 
> Thank you very much for your help on this topic. I tried those
> parameters back and forth, however it seems to always reserve ~400MB
> on
> the biggest chunk (checked in /proc/<pid-of-fio>/smaps).
> 
> decreasing the max allowed shared memory in /proc/sys/kernel/shmmax to
> ~64M does solve our issue and fio works also on 256MB ram.
> 
> However this leads to the question if this is not a bug? I mean it
> seems
> to reserve this memory despite it's not needing it?
> What leads me to this assumption is that I can also set mem=malloc
> instead of mem=shm and I get still the same error.
> 
> We use fio 3.17 is this maybe solved in newer versions?

I built fio 3.29 in the meantime and tried it with that and oh wonder I
have absolutely no issues, so it seems I hit an old bug.

Sorry for the noise and thanks again Damien for your kind help!

Philippe

> 
> Best Regards,
> Philippe
> 
> > 
> > > 
> > > Best Regards,
> > > Philippe
> > > 
> > 
> > 
> 


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Using FIO on systems with <=512MB RAM
  2022-02-21 14:40 Using FIO on systems with <=512MB RAM Philippe Schenker
  2022-02-21 23:41 ` Damien Le Moal
@ 2022-02-28 22:41 ` Volodymyr Hoida
  2022-03-07 12:33   ` Philippe Schenker
  1 sibling, 1 reply; 6+ messages in thread
From: Volodymyr Hoida @ 2022-02-28 22:41 UTC (permalink / raw)
  To: Philippe Schenker, fio

I'm developing and maintaining web based gui for fio (w3top). And I 
can't confirm your concern.

On x64 linux, 380Mb of RAM is enough for both w3top systemd service and 
fio executable.

On ARM32 the w3top+fio pair needs about 300M of ram.

What engines do you use? I'm about libaio, posixaio, io_uring, sync*** 
and mmap v2.21 ... v3.28 on headless linux

2/21/2022 4:40 PM, Philippe Schenker пишет:
> Hello
>
> We use FIO to check the eMMC storage on our embedded boards. This works
> great for our modules that have >= 1GB RAM but on all lower-memory ones
> (<= 512MB) the OOM killer always kills FIO.
>
> I can hook up a swap which helps but is just painfully slow.
>
> I played with the settings mem, bs, iodepth and size but cannot achieve
> a configuration that works on low-memory embedded systems.
>
> Can anyone guide me how I can make this work?
>
> Best Regards,
> Philippe
>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Using FIO on systems with <=512MB RAM
  2022-02-28 22:41 ` Volodymyr Hoida
@ 2022-03-07 12:33   ` Philippe Schenker
  0 siblings, 0 replies; 6+ messages in thread
From: Philippe Schenker @ 2022-03-07 12:33 UTC (permalink / raw)
  To: fio, volodymyrhoida

Hello Volodymyr

It turned out that the fio version we where using was either buggy or
the patches our buildsystem (Yocto/Openembedded) was applying did cause
that issue.
I updated to the latest fio version in our recipes and I have it running
on 256MB RAM systems now.

Best Regards,
Philippe

On Tue, 2022-03-01 at 00:41 +0200, Volodymyr Hoida wrote:
> I'm developing and maintaining web based gui for fio (w3top). And I 
> can't confirm your concern.
> 
> On x64 linux, 380Mb of RAM is enough for both w3top systemd service
> and 
> fio executable.
> 
> On ARM32 the w3top+fio pair needs about 300M of ram.
> 
> What engines do you use? I'm about libaio, posixaio, io_uring, sync***
> and mmap v2.21 ... v3.28 on headless linux
> 
> 2/21/2022 4:40 PM, Philippe Schenker пишет:
> > Hello
> > 
> > We use FIO to check the eMMC storage on our embedded boards. This
> > works
> > great for our modules that have >= 1GB RAM but on all lower-memory
> > ones
> > (<= 512MB) the OOM killer always kills FIO.
> > 
> > I can hook up a swap which helps but is just painfully slow.
> > 
> > I played with the settings mem, bs, iodepth and size but cannot
> > achieve
> > a configuration that works on low-memory embedded systems.
> > 
> > Can anyone guide me how I can make this work?
> > 
> > Best Regards,
> > Philippe
> > 


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2022-03-07 12:33 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-02-21 14:40 Using FIO on systems with <=512MB RAM Philippe Schenker
2022-02-21 23:41 ` Damien Le Moal
2022-02-22 14:00   ` Philippe Schenker
2022-02-22 14:34     ` Philippe Schenker
2022-02-28 22:41 ` Volodymyr Hoida
2022-03-07 12:33   ` Philippe Schenker

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.