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.207sFor 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.