ten thousand small processes

Jon Mini mini at freebsd.org
Thu Jun 26 20:49:45 PDT 2003


I am aware of what you say, but it doesn't not change the
inaccuracy of your original statement.

D. J. Bernstein [djb at cr.yp.to] wrote :

> Jon Mini writes:
> > I'm sorry, but you are way off here.  First of all, caches are *much
> > larger* than the size of the processes you are talking about.
> 
> I'm sorry, but you are being misled by a naive model of CPU performance.
> On a typical Pentium in our department, the following program becomes
> three times faster when SPACING is changed from 4096 to 128:
> 
>    #define SPACING 4096
>    char data[8 * SPACING];
>    main()
>    {
>      int i;
>      for (i = 0;i < 10000000;++i) {
>        data[0] = data[SPACING];
>        data[2 * SPACING] = data[3 * SPACING];
>        data[4 * SPACING] = data[5 * SPACING];
>        data[6 * SPACING] = data[7 * SPACING];
>      }
>    }
> 
> >From an asm programmer's perspective, when FreeBSD decides to spread a
> small program's variables between
> 
>    * the beginning of a data page,
>    * the beginning of a bss page,
>    * the beginning of a malloc mmap page,
>    * the beginning of a heap page,
>    * the beginning of the next heap page,
>    * the beginning of yet another heap page,
> 
> et cetera, it is actively trying (with varying degrees of success) to
> damage cache performance in exactly the same way that this program does.
> 
> ---D. J. Bernstein, Associate Professor, Department of Mathematics,
> Statistics, and Computer Science, University of Illinois at Chicago
> _______________________________________________
> freebsd-performance at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-performance
> To unsubscribe, send any mail to "freebsd-performance-unsubscribe at freebsd.org"

-- 
Jonathan Mini <mini at freebsd.org>
http://www.freebsd.org/


More information about the freebsd-performance mailing list