Sparc Server 1000 slow to move memory

Sparc Server 1000 slow to move memory

Post by thorbjorn willo » Wed, 10 Nov 1993 17:25:42

I finally tried to measure memory move speed on our Sparc Server 1000.
It has 4 50MHz cpu modules (TI,TMS390Z55 from prtconf) .

What I find is that when I use my own version of memcpy, (which I am
pretty proud of, a lot better on big transfers than the one in the C
library) I find that a Sparc 10 with a 40MHz (TI,TMS390Z50) runs 20%
faster.  With suns own memcpy the sparc 10 is about 30 % faster (its
speed is dependent on alignment and cache collisions).

Now I have read these white papers about this fantastic XDbus, with
throughput up to 250MB/s. I have also studied this magnificent cache

I have also read about this bcopy/bzero accelerators. Where are they?
Not in the c library memcpy at least. But from my device writer
experience I have not seen anything very fast. Are they used somewhere
in the kernel under Solaris 2.2? Under Solaris 2.3 ?

Now doing memcpy of memory around is not very useful. But I have an
application that reads a lot of memory, does a lot of bitfickling,
checks the data a bit and demultiplexes the data (turns a big matrix
around). Now this application moves data around as fast as my own
very much tuned memcpy (I hope) !

 I also see that even though the cpu should be 25% faster, this
application only speeds up less that 15%. Seems like I have hit the
memory move barrier.

One thing more. When I do several processes to move memory in paralell
the speed fell with 25 %. We should be prety far from the 250MB/s
limit of the XDBUS.

Comments ?

The numbers:

Copying 2 MB 100 times:
        on Sparc Server 1000: 10.5 seconds 19 MB/s on the fastest
                              12.5 seconds 16 MB/s on the slowest

Very dependent on small differences. Proberly becauce of cache lengths and collisions.

        on Sparc 10:          8.1 seconds  24.7 MB/s

Thorbj?rn Willoch                      | Schlumberger Geco-Prakla
Phone: +47-67575548                     | Jongs?svn 4


1. Unexpected errno from socket call on SPARC 1000 server

  System: SPARC 1000 server, multi-processors, Solaris 2.3


  I'm developing a client-server system which involves 48 clients and one
  server.  Each client uses about 8 file descriptors--some tcp/ip, some
  udp/ip.  Also, each client forks a child to do some special processing
  and eventually the child exits after completing the task.  The client
  repeats the forking as needed.

  The problem I'm running into is that the whole system comes up properly;
  one client successfully forks a child to do that special processing; which
  then completes and exits; and the next time the client forks again and try
  to get a socket (using socket(AF_INET, SOCK_STREAM, 0)), it gets an `errno'
  of ENOENT (No such file or directory).  This doesn't really make sense
  since if there aren't enough system resources, I would have expected to get
  an `errno' of EMFILE, ENOMEM, or ENOSR instead of ENOENT.  The ulimit of
  that process is set to a maximum of 512 open file descriptors.  Also, if
  I only have 8 clients instead of 24, the whole system works properly and

  I would be really appreciative if anyone has any insight on this problem.
  Please either post a response or mail directly to me.



2. knfsd, map_static, and ugid mapping

3. Several keyboards on a Sparc Server 1000 ?

4. No password wanted for samba

5. automount problems with patch 101945-29 on sparc server 1000

6. Metamail and (shadow and sudo)

7. console & sun sparc server 1000

8. iSCSI - Ready for Prime Time?

9. Sparc Server 1000 crashes with vn_rele: vnode ref count 0


11. Sparc Server 1000 HUNG?

12. SUN SPARC Server 1000 problem

13. Ultra memory compatible with Server 1000?