· Apr 10

IRIS start and stop too slow

Trying to make some scripts to do some IRIS initialization during startup, I noticed that iris start and particularly stop takes too much time, and it starts to many processes in the background.

nostu is mostly useless for system initialization but could help in some scenarios, such as setup passwords, but it is still too slow

irisowner@4ea1bfb50b7f:~$ time iris start iris nostu
Starting IRIS
Using 'iris.cpf' configuration file

Starting Control Process
Global buffer setting requires attention.  Auto-selected 25% of total memory.
Allocated 7417MB shared memory
6002MB global buffers, 600MB routine buffers
Creating a WIJ file to hold 99 megabytes of data
InterSystems IRIS is started in single user mode.
To log into InterSystems IRIS, type:
    iris session IRIS -B

real    0m0.513s
user    0m0.090s
sys     0m0.207s

For instance, I have no idea why it starts so many AUX processes, even during NOSTU. With a normal start with no extra volumes attached, just plain start, I see no reasons to have so many AUX processes as well.

2011 pts/0    S      0:00 /usr/irissys/bin/irisdb -s/usr/irissys/mgr/ -w/usr/irissys/mgr/ -cc -B -Enostu -C/usr/irissys/iris.cpf*IRIS
 2052 pts/0    S      0:00 /usr/irissys/bin/irisdb WD                                                                                 
 2053 pts/0    S      0:00 /usr/irissys/bin/irisdb GC                                                                                 
 2054 pts/0    S      0:00 /usr/irissys/bin/irisdb JD                                                                                 
 2055 pts/0    S      0:00 /usr/irissys/bin/irisdb AUX2                                                                               
 2056 pts/0    S      0:00 /usr/irissys/bin/irisdb AUX1                                                                               
 2057 pts/0    S      0:00 /usr/irissys/bin/irisdb AUX5                                                                               
 2058 pts/0    S      0:00 /usr/irissys/bin/irisdb AUX7                                                                               
 2059 pts/0    S      0:00 /usr/irissys/bin/irisdb AUX4                                                                               
 2060 pts/0    S      0:00 /usr/irissys/bin/irisdb AUX3                                                                               
 2061 pts/0    S      0:00 /usr/irissys/bin/irisdb AUX6                                                                               
 2062 pts/0    S      0:00 /usr/irissys/bin/irisdb DBXD

stop from NOSTU takes almost 5 seconds, and I have no idea, what can take so long, even when no changes made at all.

irisowner@4ea1bfb50b7f:~$ time iris stop iris quietly bypass
This copy of InterSystems IRIS has been licensed for use exclusively by:
InterSystems IRIS Community
Copyright (c) 1986-2023 by InterSystems Corporation
Any other use is a violation of your license agreement

real    0m4.892s
user    0m0.023s
sys     0m0.244s

An ordinary start of IRIS, is what I need for initialization. But I would need to switch off some stuff.

 2440 pts/0    S      0:00 /usr/irissys/bin/irisdb -s/usr/irissys/mgr/ -w/usr/irissys/mgr/ -cc -B -C/usr/irissys/iris.cpf*IRIS
 2481 pts/0    S      0:00 /usr/irissys/bin/irisdb WD                                                                         
 2482 pts/0    S      0:00 /usr/irissys/bin/irisdb GC                                                                         
 2483 pts/0    S      0:00 /usr/irissys/bin/irisdb JD                                                                         
 2484 pts/0    S      0:00 /usr/irissys/bin/irisdb AUX1                                                                       
 2485 pts/0    S      0:00 /usr/irissys/bin/irisdb AUX2                                                                       
 2486 pts/0    S      0:00 /usr/irissys/bin/irisdb AUX6                                                                       
 2487 pts/0    S      0:00 /usr/irissys/bin/irisdb AUX7                                                                       
 2488 pts/0    S      0:00 /usr/irissys/bin/irisdb AUX4                                                                       
 2489 pts/0    S      0:00 /usr/irissys/bin/irisdb AUX5                                                                       
 2490 pts/0    S      0:00 /usr/irissys/bin/irisdb AUX3                                                                       
 2491 pts/0    S      0:00 /usr/irissys/bin/irisdb DBXD                                                                       
 2493 pts/0    S      0:00 /usr/irissys/bin/irisdb -s/usr/irissys/mgr -cj -p13 START^MONITOR
 2499 pts/0    S      0:00 /usr/irissys/bin/irisdb -s/usr/irissys/mgr -cj -p13 START^CLNDMN
 2501 pts/0    S      0:00 /usr/irissys/bin/irisdb -s/usr/irissys/mgr -cj -p13 ^RECEIVE
 2503 pts/0    S      0:00 /usr/irissys/bin/irisdb -s/usr/irissys/mgr -cj -p13 ServerMaster^%SYS.SERVER
 2505 pts/0    S      0:00 /usr/irissys/bin/irisdb -s/usr/irissys/mgr -cj -p13 START^LMFMON
 2506 pts/0    S      0:00 /usr/irissys/bin/irisdb -s/usr/irissys/mgr -cj -p13 SERVERS^STU1
 2511 ?        Ss     0:00 /usr/irissys/httpd/bin/httpd -f /usr/irissys/httpd/conf/httpd.conf -d /usr/irissys/httpd -c Listen 52773
 2512 ?        Sl     0:00 /usr/irissys/httpd/bin/httpd -f /usr/irissys/httpd/conf/httpd.conf -d /usr/irissys/httpd -c Listen 52773
 2513 ?        Sl     0:00 /usr/irissys/httpd/bin/httpd -f /usr/irissys/httpd/conf/httpd.conf -d /usr/irissys/httpd -c Listen 52773
 2514 ?        Sl     0:00 /usr/irissys/httpd/bin/httpd -f /usr/irissys/httpd/conf/httpd.conf -d /usr/irissys/httpd -c Listen 52773
 2515 ?        Sl     0:00 /usr/irissys/httpd/bin/httpd -f /usr/irissys/httpd/conf/httpd.conf -d /usr/irissys/httpd -c Listen 52773
 2516 ?        Sl     0:00 /usr/irissys/httpd/bin/httpd -f /usr/irissys/httpd/conf/httpd.conf -d /usr/irissys/httpd -c Listen 52773
 2658 pts/0    S      0:00 /usr/irissys/bin/irisdb -s/usr/irissys/mgr -cj -p20 RunManager^%SYS.Task
 2659 pts/0    S      0:00 /usr/irissys/bin/irisdb -s/usr/irissys/mgr -cj -p20 Start^%SYS.Monitor.Control
 2661 pts/0    S      0:00 /usr/irissys/bin/irisdb -s/usr/irissys/mgr -cj -p20 RunDaemon^%SYS.WorkQueueMgr
 2662 pts/0    S      0:00 /usr/irissys/bin/irisdb -s/usr/irissys/mgr -w/usr/irissys/mgr -cj -p21 StartWorkDaemon^STU
 2663 pts/0    S      0:00 /usr/irissys/bin/irisdb -s/usr/irissys/mgr -cj -p20 RunRemoteQueueDaemon^%SYS.WorkQueueMgr
 2664 pts/0    SN     0:00 /usr/irissys/bin/irisdb -s/usr/irissys/mgr -cj -p22 startWork^%SYS.WorkQueueMgr
 2665 pts/0    SN     0:00 /usr/irissys/bin/irisdb -s/usr/irissys/mgr -cj -p22 startWork^%SYS.WorkQueueMgr

I know, I can switch off WebServer, but it looks like it's the only significant help. On Community Edition for unknown reasons, it still starts ECP-related processes. And already mentioned AUX processes.

During initialization, I could make some temporary changes to iris.cpf, WebServer=0 for instance (and it's quite tricky to return original values back), but I can't find all the switches, and still it does not look like I can significantly speed up the start or stop the instance.

It would be very useful to be able to start and stop IRIS during docker build or docker run very fast to make some initialization. But at the moment in comparison to competitors, it takes ages.

$ZV: IRIS for UNIX (Ubuntu Server LTS for ARM64 Containers) 2023.1 (Build 226U) Thu Mar 30 2023 10:17:29 EDT
Discussion (0)2
Log in or sign up to continue