Re: Single CPU Performance Problems?
Posted in 1999
Topics: High Availability & Replication, Backup & Restore, Performance & Tuning, Storage & Space Management, Stored Procedures & SPL, Connectivity: ESQL/C, 4GL & Embedded SQL, Server Administration, Transactions, Locking & Isolation, Logging & Checkpoints, Networking & sqlhosts Configuration, Platform-Specific Issues, Java & JDBC Development, Versions, Editions & End-of-Life
Is the java program running on the database server or on a separate client?
3.5 rows/sec or 10 rows/sec sounds pretty abysmal. I'm guessing the problem
is in the client to database communication speed, not within the database
itself.
To give you some idea of reasonable insert speed, here are a few examples.
ESQL/C client on a separate box may be around 50 rows per second. Straight
insert speed for an esql/c program going through shared memory can easily
pass 100 rows/sec. Using insert cursors can reach several hundred 100 byte
rows a second. The high performance loader into a round robin fragmented
table without logging can load more than 100,000 rows per second.
Try throwing together a quick C program or stored procedure that does
inserts in a loop to see if the insert on the database side is the real
problem.
Jay Buckler
Gregory P. Schin <gps@lucent.com> wrote in message
news:37F12EC4.F13CF853@lucent.com...
> Hi,
>
> I need some help tuning a single processor Sun Microsystems Ultra 5
> system with 256 meg of memory running IDS 7.3 and Solaris 7. We have an
> application written in Java that frequently loads large amounts of data
> into the database. We can not seem to get reliably good performance
> from this application with IDS on the Sun Platform. The application
> also is being run on Windows NT Server 4.0 with SQL Server 7.0 and we
> get good performance. As a comparison, loading the same data on an NT
> box with 1 Pentium III 400 cpu and 256 meg of memory we can average
> loading 10 rows per second into the database - on the Sun box with IDS
> 7.3 we can only average 3.5 rows per second. I think we should be able
> to get the performance to at least equal the NT box. Any ideas or
> suggestions?
>
> Thanks,
>
> Greg
>
>
#**************************************************************************
>
> #
> # INFORMIX SOFTWARE, INC.
> #
> # Title: onconfig.std
> # Description: Informix Dynamic Server Configuration Parameters
> #
>
#**************************************************************************
>
> # Root Dbspace Configuration
>
> ROOTNAME rootdbs # Root dbspace name> ROOTPATH /dev/informix_root # Path for device containing root dbspace
> ROOTOFFSET 2 # Offset of root dbspace into device (Kbytes)
> ROOTSIZE 20000 # Size of root dbspace (Kbytes)>
> # Disk Mirroring Configuration Parameters
>
> MIRROR 0 # Mirroring flag (Yes = 1, No = 0)
> MIRRORPATH # Path for device containing mirrored root
> MIRROROFFSET 0 # Offset into mirrored device (Kbytes)>
> # Physical Log Configuration
>
> PHYSDBS rootdbs # Location (dbspace) of physical log
> PHYSFILE 1000 # Physical log file size (Kbytes)>
> # Logical Log Configuration
>
> LOGFILES 6 # Number of logical log files
> LOGSIZE 500 # Logical log size (Kbytes)>
> # Diagnostics
>
> MSGPATH /usr/informix/online.log # System message log file path
> CONSOLE /dev/console # System console message path
> # ALARMPROGRAM /usr/informix/etc/log_full.sh # Alarm program path
> ALARMPROGRAM /usr/informix/etc/no_log.sh # Alarm program path> SYSALARMPROGRAM /usr/informix/etc/evidence.sh # System Alarm program
> path
> TBLSPACE_STATS 0>
> # System Archive Tape Device
>
> # TAPEDEV /dev/tapedev # Tape device path
> TAPEDEV /dev/null # Tape device path
> TAPEBLK 16 # Tape block size (Kbytes)
> TAPESIZE 10240 # Maximum amount of data to put on tape (Kbytes)>
> # Log Archive Tape Device
>
> LTAPEDEV /dev/tapedev # Log tape device path
> LTAPEBLK 16 # Log tape block size (Kbytes)
> LTAPESIZE 10240 # Max amount of data to put on log tape (Kbytes)>
> # Optical
>
> STAGEBLOB # Informix Dynamic Server/Optical staging area
>
> # System Configuration
>
> SERVERNUM 0 # Unique id corresponding to a Dynamic Server instance
> DBSERVERNAME engledive # Name of default database server
> DBSERVERALIASES # engledive_tp # List of alternate dbservernames
> NETTYPE # Configure poll thread(s) for nettype
> DEADLOCK_TIMEOUT 60 # Max time to wait of lock in distributed env.
> RESIDENT 1 # Forced residency flag (Yes = 1, No = 0)
>
> MULTIPROCESSOR 0 # 0 for single-processor, 1 for multi-processor
> NUMCPUVPS 1 # Number of user (cpu) vps
> SINGLE_CPU_VP 1 # If non-zero, limit number of cpu vps to one
>
> NOAGE 1 # Process aging
> AFF_SPROC 0 # Affinity start processor
> AFF_NPROCS 0 # Affinity number of processors>
> # Shared Memory Parameters
>
> LOCKS 20000 # Maximum number of locks
> BUFFERS 5000 # Maximum number of shared buffers
> NUMAIOVPS 2 # Number of IO vps
> PHYSBUFF 32 # Physical log buffer size (Kbytes)
> LOGBUFF 32 # Logical log buffer size (Kbytes)> LOGSMAX 6 # Maximum number of logical log files
> CLEANERS 8 # Number of buffer cleaner processes
> SHMBASE # Shared memory base address
> SHMVIRTSIZE 8000 # initial virtual shared memory segment size
> SHMADD 8192 # Size of new shared memory segments (Kbytes)
> SHMTOTAL 0 # Total shared memory (Kbytes). 0=>unlimited
> CKPTINTVL 300 # Check point interval (in sec)
> LRUS 8 # Number of LRU queues
> LRU_MAX_DIRTY 60 # LRU percent dirty begin cleaning limit
> LRU_MIN_DIRTY 50 # LRU percent dirty end cleaning limit
> LTXHWM 50 # Long transaction high water mark percentage
> LTXEHWM 60 # Long transaction high water mark (exclusive)
> TXTIMEOUT 300 # Transaction timeout (in sec)
> STACKSIZE 32 # Stack size (Kbytes)>
> # System Page Size
> # BUFFSIZE - Dynamic Server no longer supports this configuration
> parameter.
> # To determine the page size used by Dynamic Server on your
> platform
> # see the last line of output from the command, 'onstat -b'.
>
>
> # Recovery Variables
> # OFF_RECVRY_THREADS:
> # Number of parallel worker threads during fast recovery or an offline
> restore.
> # ON_RECVRY_THREADS:
> # Number of parallel worker threads during an online restore.
>
> OFF_RECVRY_THREADS 10 # Default number of offline worker threads
> ON_RECVRY_THREADS 1 # Default number of online worker threads>
> # Data Replication Variables
> # DRAUTO: 0 manual, 1 retain type, 2 reverse type
> DRAUTO 0 # DR automatic switchover
> DRINTERVAL 30 # DR max time between DR buffer flushes (in sec)
> DRTIMEOUT 30 # DR network timeout (in sec)
> DRLOSTFOUND /usr/informix/etc/dr.lostfound # DR lost+found file path>
> # CDR Variables
> CDR_LOGBUFFERS 2048 # size of log reading buffer pool (Kbytes)
> CDR_EVALTHREADS 1,2 # evaluator threads (per-cpu-vp,additional)
> CDR_DSLOCKWAIT 5 # DS lockwait timeout (seconds)
> CDR_QUEUEMEM 4096 # Maximum amount of memory for any CDR queue (Kbytes)> CDR_LOGDELTA 30 # % of log space allowed in queue memory
> CDR_NUMCONNECT 16 # Expected connections per server
> CDR_NIFRETRY 300 # Connection retry (seconds)
> CDR_NIFCOMPRESS 0 # Link level compression (-1 never, 0 none, 9 max)>
> # Backup/Restore variables
> BAR_ACT_LOG /tmp/bar_act.log
> BAR_MAX_BACKUP 0
> BAR_RETRY 1
> BAR_NB_XPORT_COUNT 10
> BAR_XFER_BUF_SIZE 31>
> # Informix Storage Manager variables@
Jay, Thank you for the response. The java program is running on the same server as the database and we are using stored procedures to insert the data. We already have someone with Informix looking at this but they have not been much help so far. If we can get the performance to at least 10 rows per second on the Ultra 5 platform we will probably be ok. We have a NT config with 4 cpu's and 1 gig of memory and we can get performance of 30 rows per second. I am assuming if we went to a multiple cpu Sun box we would get much better performance as well. We have heard that SE can outperform IDS on a single cpu system. Has anyone else heard this? Would Oracle perform significantly better than IDS on the single processor Sun? Is there anything in the onconfig file (in previous positing) that is glaringly wrong?
Related threads
- onbar -c -F in Windows Informix instance
- Anyone... SQLCODE=-668, ISAM error=-1
- Not using the 100% logical log page size alloacted to informix