Thread (5 messages) 5 messages, 3 authors, 2011-02-01

> 2GB memset is very slow

From: vinit dhatrak <hidden>
Date: 2011-02-01 12:48:29

On Tue, Feb 1, 2011 at 3:53 PM, Jason Nymble [off-list ref] wrote:
I was using memset on a reserved area of memory (64bit x86 kernel and
system), and noticed that as soon as I exceed a size of 2GB, the function
becomes extremely slow, e.g just below 2GB it takes typically about 0.3s,
and just above 2GB is takes about 39s to complete...

I tried tracing the eventual function that is called in the kernel, and I
think it resolves to the below (even on x86_64 if I'm not mistaken):
static inline void *__memset_generic(void *s, char c, size_t count)
{
       int d0, d1;
       asm volatile("rep\n\t"
                    "stosb"
                    : "=&c" (d0), "=&D" (d1)
                    : "a" (c), "1" (s), "0" (count)
                    : "memory");
       return s;
}

size_t is defined as (unsigned long) on my platform, but I suspect the d0
and d1 variables above cause problems because they are int... Is this a
kernel bug, or known limitation, or what?
_______________________________________________
Kernelnewbies mailing list
Kernelnewbies at kernelnewbies.org
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

Hi Jason,

How did you allocate the memory? What is the size of physical memory that is
attached to your machine ?

-Vinit
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20110201/abee8df7/attachment.html 
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help