Fix script execution speed

vktripper
Tera Contributor

I am running a fix script to update several million CI records. We are tracking the time it takes for the script to run and complete. Can I expect the performance (script execution speed, time taken to complete etc.) in PRD to be any different than in sub-PRD instances?

1 ACCEPTED SOLUTION

No.  While you may have overall more horsepower in production, each processor has roughly the same resources available.  With a fix script being single threaded, you don't get any benefits from a larger production environment.

 

I've run many large scripts, and done a lot in the way of performance testing them before releasing to production.  I've never been surprised with a significantly different run time in prod then what I calculated.

View solution in original post

9 REPLIES 9

sachin_namjoshi
Kilo Patron
Kilo Patron

Performance can be different between sub prod and PROD instances since number of records may be different in both instances.

Also, it depends on your fix script code you are executing.

 

Regards,

Sachin

Chris M3
Tera Guru

I would not expect the speed that it processes each transaction in the fix script to be any different in your production.  The only variable is the number of rows it is interacting with.

Several million rows can definitely take a long time.  If you can break it up into smaller jobs, you can submit several fix scripts that can be picked up by different processors, and then you won't be single threaded.  Do this too much though, and you can definitely impact your system performance.

 

ARG645
Tera Guru

Simple answer is: You cannot measure the execution time or run time directly before executing the fix script. 

But, you can measure it indirectly. I have been  in this exact situation. 

Perform an experiment in Sub-Prod. You can find the execution time for specific run by clicking the UI action named "Show Progress Workers" [Screen shot attached below]

find_real_file.png

Once you click this UI action, you will be directed to a page where you can see all the stats of each run, example screen shot is attached below

find_real_file.png

 

So say your sub prod has 1000 rows and your Fix script took 10 seconds to execute. So simple math is to say it processed 100 rows per second. Applying that same math, if you have 2000 rows in Production, it will take 20 seconds [somewhere around that number]. 

Execution Time is the time that your program takes to execute. For example, 10 seconds, or 10 milliseconds.

Running time might be used interchangeably with execution time (how much time it takes for your program to terminate)

References: 

what is the difference between running time and execution time?

Thank you,

Aman Gurram

vktripper
Tera Contributor

Thanks for the responses. Assuming the PRD and sub-PRD instances are clones of each other, are there cluster/node configurations that Servicenow would have done differently for a production instance versus a non-PRD instance so that we see some efficiencies/gains on this front in PRD?