I'm using a new Solaris machine using the Niagara CPU. bcp seems to be
running much slower then other platforms. *much* slower. A bcp on the
Niagara platform seems to take twice as long as an older Sparc CPU.
I'm using Sybase 12.5 and Solaris 10.
sun4u
syscall seconds calls errors
_exit .000 13
read .008 286
write 4.945 50485
open .295 88 10
close .003 148 7
time .000 6
chmod .000 2 2
brk .002 90
stat .002 53 4
lseek .000 3
getpid .000 39
getuid .000 5
access .000 12 2
pipe .000 7
getgid .000 2
ioctl .000 12 9
execve .011 9
umask .000 2
fcntl .000 49
fcntl .000 11
fcntl .000 6
readlink .000 3 3
sigaction .001 79
sigfillset .000 2
getcontext .000 12
setcontext .000 6
setustack .001 9
waitid .000 20 5
mmap .004 164
munmap .001 64
setrlimit .000 1
getrlimit .000 13
memcntl .002 30
sysinfo .000 1
fork1 .004 12
lwp_self .000 12
lwp_sigmask .001 70
llseek .000 3 2
pollsys .000 5
door_info .000 1
door_call .000 1
schedctl .000 8
resolvepath .001 58
stat64 .001 26 8
lstat64 .000 2
fstat64 .000 20
open64 .001 7
so_socket .000 1
connect .000 2 2
recv 2.740 52580 1
send .000 6
setsockopt .000 5
-------- ------ ----
sys totals: 8.040 104551 55
usr time: 101.964
elapsed: 148.950
bash-3.2$
And the same script running on globes1, a sun4v system:
bash-3.2$ truss -fc ksh ./test_bcp.sh
**********************************************************************
start: Thu Sep 11 16:19:10 GMT 2008
end: Thu Sep 11 16:23:01 GMT 2008
**********************************************************************
signals ------------
SIGCLD 4
total: 4
syscall seconds calls errors
_exit .000 13
read .011 274
write 1.516 3169
open .029 87 11
close .003 151 7
time .000 6
chmod .000 2
brk .002 98
stat .001 49 4
lseek .000 1
getpid .000 40
getuid .000 5
access .000 10 1
pipe .000 7
getgid .000 2
ioctl .000 13 9
execve .013 9
umask .000 2
fcntl .000 51
fcntl .000 11
fcntl .000 6
readlink .000 4 4
sigaction .001 79
sigfillset .000 2
getcontext .000 12
setcontext .000 7
setustack .001 9
waitid .001 20 4
pathconf .000 2
mmap .005 146
munmap .005 54
setrlimit .000 1
getrlimit .000 13
memcntl .004 25
sysconfig .000 1
sysinfo .000 2
fork1 .006 12
lwp_self .000 12
lwp_sigmask .001 71
llseek .000 3 2
pollsys .000 6
schedctl .000 8
resolvepath .002 53
stat64 .001 28 8
lstat64 .000 2
fstat64 .000 19
open64 .000 7 1
so_socket .000 3
connect .000 3 2
recv 2.862 38419 1
recvfrom .000 1
send .000 7
setsockopt .000 5
-------- ------ ----
sys totals: 4.479 43042 54
usr time: 218.050
elapsed: 230.660
Hello,
Are you running bcp out or in?
One platform looks like it is doing many more write() calls than the
other:
sun4u
syscall seconds calls errors
write 4.945 50485
recv 2.740 52580 1
And the same script running on globes1, a sun4v system:
syscall seconds calls errors
write 1.516 3169
recv 2.862 38419 1
Rather than use "truss -c", if you look at a detailed truss, can you
see
if they are writing the same amount of data with each call? For
example,
if you were doing bcp out, find the file you are writing to and look
to see
how many bytes are being written out:
27030: open("aut.dat", O_WRONLY|O_CREAT|O_TRUNC|O_LARGEFILE, 0666) =
4
27030: write(4, " 1 7 2 - 3 2 - 1 1 7 6\t".., 1833) = 1833
I would also be curious about the recv() calls. One of your sessions
does way more than the other. So it would look like either they are
using different packet sizes or there are different amounts of data
being read.