Download Latest Version tpc-c-ifmx.tar.gz (392.7 kB)
Email in envelope

Get an email when there's a new version of IIUG Software Repository

Name Modified Size InfoDownloads / Week
Parent folder
extra.c 2021-01-01 28.8 kB
g1Delivery.dat 2021-01-01 9.0 kB
g1NewOrder.dat 2021-01-01 9.0 kB
g1OrderStatus.dat 2021-01-01 9.0 kB
g1StockLevel.dat 2021-01-01 9.0 kB
g3.dat 2021-01-01 380 Bytes
g4.dat 2021-01-01 105 Bytes
ifmx_db_layout.dat 2021-01-01 2.4 kB
client.ec 2021-01-01 154.1 kB
Makefile 2021-01-01 980 Bytes
561-Delivery.eps 2020-05-11 21.1 kB
561-NewOrder.eps 2020-05-11 21.5 kB
561-NewOrder.jpg 2020-05-11 58.1 kB
561-OrderStatus.eps 2020-05-11 20.9 kB
561-Payment.eps 2020-05-11 21.2 kB
561-StockLevel.eps 2020-05-11 21.5 kB
561.gnp 2020-05-11 1.2 kB
alarm 2020-05-11 10.1 kB
archive.sh 2020-05-11 1.1 kB
bench.ec 2020-05-11 191.9 kB
bld_new_idx.sql 2020-05-11 4.7 kB
bld_old_idx.sql 2020-05-11 4.8 kB
client.c 2020-05-11 224.4 kB
client_custom.ec 2020-05-11 163.8 kB
count_tr.sql 2020-05-11 208 Bytes
cr_cluster.sql 2020-05-11 612 Bytes
cr_old_index.sql.dubious 2020-05-11 5.3 kB
crproc.sql 2020-05-11 244 Bytes
g1Payment.dat 2020-05-11 9.0 kB
Gigabyte.dcf 2020-05-11 1.1 kB
ipcrm_tpc 2020-05-11 126 Bytes
killbench 2020-05-11 365 Bytes
max_activity.sql 2020-05-11 330 Bytes
protos.c 2020-05-11 867 Bytes
read_results.pl 2020-05-11 8.2 kB
schema.newindex 2020-05-11 11.5 kB
set_psort 2020-05-11 107 Bytes
setlibs 2020-05-11 85 Bytes
sigalarm.c 2020-05-11 1.5 kB
tpc_counter.pl 2020-05-11 966 Bytes
tpc_dash.sh 2020-05-11 447 Bytes
tpc_summary.pl 2020-05-11 5.5 kB
tpcc_monitor.pl 2020-05-11 6.8 kB
upd_stats.sql 2020-05-11 1.2 kB
Totals: 44 Items   1.0 MB 0
Introduction

This TPC-C like benchmark has been inspired from the Real TPC Concil TPC-C Benchmark, although it does not claim to be the official one.

It has been developed a few years ago by students of the Universidad de Valladolid, Spain, as a case study on PostgreSql. I have been refactoring it
progressively to work on Informix, including better errors handling, greater ease of configuration and more tools to monitor while running.

Purpose
This benchmark is an easy and quick way to set up and run an automated test scenario, ranging from 1 informix sessions to thousands of them.
It can be useful to evaluate the computing efficiency of a server, compare the performance between informix versions, realize a stress test 
to identify the limits of a configuration, and probably more usages we did not identify yet.

Supported platforms
The benchmark has been developped in Informix ESQL/C, and is intended to work exclusively on Informix Dynamic Server, any version from 9.40 and above.
The initial development platform is Linux Red 6 hat with gcc. It has been tested on Red Hat/Centos 7, but should work on any more or less recent linux
platform. It has been tested successfully on Sparc platforms with Solaris. We have no feedback about AIX not HP platforms yet. We are keen of having feedback 
for those platforms.

Benchmark architecture

tpc-c-ifmx is just made of 2 main programs: clien and bench
1) bench: this executable is multi-purpose
	a) it creates, resets and deletes the tpcc database according to the norms of the official TPC-C benchmark. You can define the number of warehouses
	of the database, which will determine the maxmimum number of user sessions while the benchmark runs

	b) it launches the benchmark execution. You can define how many warehouses you will use, and how many terminals for each warehouse. You will also
	set the duration of the warmup period, the duration of the measured session and the duration of cool down. 

	c) it launches and coordonates the informix sessions and shuts them down at the end of the benchmark execution.

	d) it computes the results of all the individual client sessions and produces the final summary of the benchmark session, including the 'tpc-c' result, 
	consisting in a number of valid (under 2 seconds duration) new orders transactions number per minute.

	e) upon request, you can save the results of a benchmark session for further analysis

1) clien: this executable does 2 main things
	a) it runs one session that can execute a range of specific transactions againts the tpcc database, which are:
		NEW-ORDER TRANSACTIONS,
		PAYMENT TRANSACTIONS,
		ORDER-STATUS TRANSACTIONS,
		DELIVERY TRANSACTIONS,
		STOCK-LEVEL TRANSACTIONS
	Each session will execute all of those transactions, in a not so randomized way, during the whole duration of the benchmark session.

	b) it writes all the results of its own sessions in file system files, so that the final result can be computed at the end


Some day I will rename the 'clien' executable by 'client', just because it itches...


Set up, configuration and build the program

The ease of setup is still an ongoing task but we have now reach a reasonable level of flexibility. You can configure your benchmark in the following file

1) src/ifmx_db_layout.dat  contains many of the variable parameters that you will have to adapt to you system and informix instance too. The variable names are intended to
be self explanatory and their meaning is explained as comments. You will find data about user id/passwd, dbspaces, different locations where files will go etc. You will also
define in that file which 'pace' you want to declare to your benchmark (the pace will be part of the executable). You can choose between 'lazy' (typing slowly and thinking slowly,
probably too hot outside ;-), 'Human' sets reasonnable keyboard type times and think times, 'Stress' has no keyboard time nor think time. you will use it to push your Informix server to its limits.

Check that all the declared directories exists and have read/write permissions, you can change them to your own values.

Compiling the Benchmark
After setting all the values and adapting them to your needs, you can start compiling the benchmark

Go to the ifmx_tpc-c directory and type
make clean
make

and that should do it


Executing the benchmark
After compiling, cd to the directory indicated by the EXECDIR variable
./bench


The very first step is to create to tpcc database and fill the tables. Choose the option 'Create database'
input the number of warehouses. Please bear in mind that one warehouse will have up to 10 user sessions ( So if you create 50 warehouses, your bench will run up to 500 user sessions )

After that, let the program create your database and fill the tables.

When this is done, you can choose to run the benchmark (option 'Run the test')

Input the number of warehouses you want to play
Then the number of users per warehouse
Then the number of warmup seconds
The the number of minutes the benchmark will take (when all the transactions will be measured)
And finally if you want to run a checkpoint before starting

When the test is completed, the menu will be displayed, and you want to choose the option to display the results (Show and store test results)

you can see more details in the tpc-uva-guide.pdf document located in this directory

Any question, suggestion , enhancements of fix, call me at ericv@kandooerp.org

Have fun!




Source: README.txt, updated 2020-05-11