Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
Huey
Employee
Employee

What controls the 'Stop reading when memory limit reached' setting?

Hi All,

What setting controls the 'Stop reading when memory limit reached' setting?  In some logs I see that it is set to true and in other logs, it's false.  How is this determined.  Also, is there a log setting that can determine the amount of memory in use?

For example:

00025489: 2020-07-02T14:10:11 [SORTER ]I: 'Stop reading when memory limit reached' is set to true (sorter.c:640)

 

 

Labels (2)
1 Solution

Accepted Solutions
JitenderR
Employee
Employee

@Huey Yes, the memory_limit_total parameter can be modified via exporting JSON only. There are other internal parameters that control various memory parameters. Depending on your use case and performance tuning needs these needs to be set. You should always seek CSE/SME/Qlik Consulting services help to set as these are undocumented and would have other impacts if not set properly. 

To your question - can we know the total amount of memory used by a specific task. For example in windows, you can look this up via task manager and go to the exact 'process' that is created for the task running. It will give you the amount of memory as well. Note that there are 'various' sub processes viz., sorter, buffer etc that run and use memory and hence to calculate a aggregated value at a given point of time and write to log is not much beneficial and hence you will not see the same in the log. But if you need to know these values, you can download the "memory report" for a running task (cannot be done from a task that is not running - below screenshot). This report gives more insight into memory usage. 

Regards

JR

JitenderR_0-1594402372162.png

 

 

 

View solution in original post

3 Replies
JitenderR
Employee
Employee

@Huey The default value for this setting is YES. if you want to set it to NO, this is done by updating the task JSON as shown below under the sorter settings. Note that this setting tells replicate to 'stop reading' from source (exactly meaning, process the amount of data you can fit in memory as specified by 'memory_limit_total' parameter) when specified memory is reached. If set to NO, then replicate will keep reading the incoming transaction (if it is too huge, say a transaction with 50 million records), it will keep reading it and it might eat all the available memory on the box. In summary, do not change this in production without consulting with CSE/PS/SME/R&D. 

 

fvi_0-1594233731012.png

 

Regards

JR

 

Huey
Employee
Employee
Author

Thanks @JitenderR !

I assume that the memory_limit_total is also a value that can only be modified by exporting the task?  Actually are any of the sorter controls available via the GUI?

Thanks Again,

Huey

JitenderR
Employee
Employee

@Huey Yes, the memory_limit_total parameter can be modified via exporting JSON only. There are other internal parameters that control various memory parameters. Depending on your use case and performance tuning needs these needs to be set. You should always seek CSE/SME/Qlik Consulting services help to set as these are undocumented and would have other impacts if not set properly. 

To your question - can we know the total amount of memory used by a specific task. For example in windows, you can look this up via task manager and go to the exact 'process' that is created for the task running. It will give you the amount of memory as well. Note that there are 'various' sub processes viz., sorter, buffer etc that run and use memory and hence to calculate a aggregated value at a given point of time and write to log is not much beneficial and hence you will not see the same in the log. But if you need to know these values, you can download the "memory report" for a running task (cannot be done from a task that is not running - below screenshot). This report gives more insight into memory usage. 

Regards

JR

JitenderR_0-1594402372162.png