Hi all,

We have two identical servers running SLES. They were not acquired at
the same time, resulting that one of them runs at a 2.6 kernel and the
other at 3.0 kernel.

The server are used for heavy computations and have 4x8 core Xeon cpu's
and 256Gb memory each.

At the server using the 2.6 kernel we never have performance problems,
at newest server with the 3.0 kernel we have. Freeing cached memory
when required for an allocation of a program takes very long.

For example we started five computation using the same program at once.
Each computation allocated and filled 20Gb of memory at the start. At
the time of starting about 200Gb of cached memory was available and the
load was not very high, about 16. Just the allocation and filling of
the memory took 6 hours. We checked but the swap file was not used
during the allocation. After these computations were finished, we
directly restarted the same computations (now all required memory is
free) and the allocation and filling of memory only required a few
minutes as we know from the server with the 2.6 kernel.

We wrote a small test program in Fortran which just allocates and fills
20Gb of memory and we obtained the same bad performance if all
available memory is cached. Also changing the compiler from Ifort to
G95 did not solve the problem.

Therefore, we are quite sure that the performance problem is due to
freeing the cached memory. Using the command 'sync' before starting the
computation doesn't help. As we don't have access to the root account,
we cannot free the cached memory
(sync; echo 3 > /proc/sys/vm/drop_aches).

A solution could be to ask our system administrator to provide us a
sudo script for freeing the cached memory. We should then run this
script before starting any computation. But, would there be a more
elegant solution to this problem? Are there setting that our system
administrator could change to get the same performance in freeing the
memory as we have at the server with the 2.6 kernel?

Best regards,

Johan