[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [HTCondor-users] How to change the RequestMemory of condor jobs



Hey ...Tim,

Could you explain what is meant by:

> # Note that if the route does the condor thing and sets RequestMemory, this transform will stomp on that 

I am a little lost on what this sentence means also. Also the way this 
comment is written:

> # 1. 'maxMemory' from the source job if it's defined 

This seems like setting RequestMemory is set ignoring any maximum memory 
restriction on server that will run the job. I guess that the job is 
only matched to a server that has a high enough memory limit to run it 
but I wanted to be sure.

Fred

On 7/2/25 10:32, Tim Theisen via HTCondor-users wrote:
> Hello Wendy,
> 
> I missed this question since it was a reply to another question. 
> Unfortunately, the handling of RequestMemory is not straightforward. The 
> comments in the default ce routes shed some light on this:
> 
>  ÂÂÂ # Outside of the HTCondor WholeNodeJobs case, set RequestMemory to 
> one of the following, in order:
>  ÂÂÂ # 1. 'maxMemory' from the source job if it's defined
>  ÂÂÂ # 2. default_MaxMemory from the job route
>  ÂÂÂ # 3. 2000
>  ÂÂÂ # Note that if the route does the condor thing and sets 
> RequestMemory, this transform will stomp on that
> 
> Hopefully this advice helps.
> 
> ...Tim
> 
> On 6/25/25 15:20, Wendy Dronen wrote:
>> Dear All,
>> We would like to change the RequestMemory from the job router of 
>> HTCondor-CE, and this is what we have in the job router file[1],
>> Â ÂEVALSET RequestMemory maxMemory * 1.1
>> Â ÂEVALSET RequestVirtualMemory maxMemory * 2.2
>>
>> however it does not seem to work, we can see the job's RequestMemory 
>> is still set to equal to the maxMemory which was a field set by the 
>> ATLAS jobs in their job submission file.
>> # condor_q 1725991 -l |grep -i 'memory.* = '
>> JobMemory = RequestMemory
>> JobMemoryLimit = 13516800.0
>> maxMemory = 6000
>> RequestMemory = 6000
>>
>> Could you shed some light on this?
>>
>> Cheers!
>>
>> -Wenjing (AGLT2)
>> [1]
>> ##### Route 1
>> JOB_ROUTER_ROUTE_ATLASProductionMCOREQueue @=jre
>> Â ÂNAME ATLAS Production MCORE Queue
>> Â ÂUNIVERSE VANILLA
>> Â ÂREQUIREMENTS regexp("usatlas",Owner) && ifThenElse(xcount =?= 
>> undefined,false,xcount == 8)
>> Â Â# autoconversion of route 'ATLAS Production MCORE Queue' from old 
>> route syntax
>> Â Â# set_* rules
>> Â ÂSET IsAnalyJob false
>> Â ÂSET IsLustreJob false
>> Â ÂSET IsMediumJob false
>> Â ÂSET IsShortJob false
>> Â ÂSET IsTestJob false
>> Â ÂSET IsTier3TestJob false
>> Â ÂSET IsUnlimitedJob false
>> Â ÂSET JobPrio 26
>> Â ÂSET localQue "MP8"
>> Â ÂSET PeriodicRemove (RemoteWallClockTime > (3 * 24 * 60 * 60 + 5 * 60))
>> Â ÂSET Rank 100 / (1 + (MaxMemory / RequestCpus / 1000 - 
>> TARGET.DetectedMemory / TARGET.DetectedCpus / 1000) * (MaxMemory / 
>> RequestCpus / 1000 - TARGET.DetectedMemory / TAR
>> GET.DetectedCpus / 1000))
>> Â ÂSET RequestAnalyTask 0
>> Â ÂSET RequestLMEMTask ifThenElse(maxMemory =!= 
>> undefined,ifThenElse(maxMemory <= 47992,0,8),0)
>> Â ÂSET requirements ((TARGET.TotalDisk =?= undefined) || 
>> (TARGET.TotalDisk >= 21000000)) && (TARGET.Arch == "X86_64") && 
>> (TARGET.OpSys == "LINUX") && (TARGET.Disk >= Reques
>> tDisk) && (6.1 * TARGET.DetectedMemory / TARGET.DetectedCpus >= 
>> RequestMemory / RequestCpus) && (TARGET.HasFileTransfer) && 
>> (TARGET.Cpus >= 8)
>> Â ÂSET Slot_Type "mp8"
>> Â Â# eval_set_* rules
>> Â ÂEVALSET AccountingGroup ifThenElse(maxMemory =!= 
>> undefined,ifThenElse(maxMemory <= 
>> 16000,strcat("group_gatekpr.prod.",Owner),ifThenElse(maxMemory <= 
>> 24000,strcat("group_
>> gatekpr.prod.",Owner,"_HMEM"),strcat("group_gatekpr.prod.",Owner,"_VHMEM"))),strcat("group_gatekpr.prod.",Owner))
>> Â ÂEVALSET JobLeaseDuration 7200
>> Â ÂEVALSET JobMemoryLimit maxMemory * 2.2 * 1024
>> Â ÂEVALSET RequestCpus ifThenElse(xcount =!= undefined,xcount,8)
>> Â ÂEVALSET RequestMemory maxMemory * 1.2
>> @jre
>>
>> ##### Route 2
>> JOB_ROUTER_ROUTE_ATLASProductionSCOREQueue @=jre
>> Â ÂNAME ATLAS Production SCORE Queue
>> Â ÂUNIVERSE VANILLA
>> Â ÂREQUIREMENTS ifThenElse(queue =?= 
>> undefined,regexp("usatlas1",Owner),ifThenElse(xcount =?= 
>> undefined,regexp("usatlas1",Owner),(queue == "prod" || queue == 
>> "Prod") && xco
>> unt == 1))
>> Â Â# autoconversion of route 'ATLAS Production SCORE Queue' from old 
>> route syntax
>> Â Â# set_* rules
>> Â ÂSET IsAnalyJob false
>> Â ÂSET IsLustreJob false
>> Â ÂSET IsMediumJob false
>> Â ÂSET IsShortJob false
>> Â ÂSET IsTestJob false
>> Â ÂSET IsTier3TestJob false
>> Â ÂSET IsUnlimitedJob false
>> Â ÂSET JobPrio ifThenElse(maxMemory =!= undefined,ifThenElse(maxMemory 
>> =?= 2048,56,16),16)
>> Â ÂSET localQue "Default"
>> Â ÂSET PeriodicRemove (RemoteWallClockTime > (3 * 24 * 60 * 60 + 5 * 60))
>> Â ÂSET Rank 100 / (1 + (MaxMemory / RequestCpus / 1000 - 
>> TARGET.DetectedMemory / TARGET.DetectedCpus / 1000) * (MaxMemory / 
>> RequestCpus / 1000 - TARGET.DetectedMemory / TAR
>> GET.DetectedCpus / 1000))
>> Â ÂSET RequestAnalyTask 0
>> Â ÂSET RequestLMEMTask ifThenElse(maxMemory =!= 
>> undefined,ifThenElse(maxMemory <= 5999,0,1),0)
>> Â ÂSET requirements ((TARGET.TotalDisk =?= undefined) || 
>> (TARGET.TotalDisk >= 21000000)) && (TARGET.Arch == "X86_64") && 
>> (TARGET.OpSys == "LINUX") && (TARGET.Disk >= Reques
>> tDisk) && (6.1 * TARGET.DetectedMemory / TARGET.DetectedCpus >= 
>> RequestMemory / RequestCpus) && (TARGET.HasFileTransfer) && 
>> ifThenElse(TARGET.SCORE =?= true,true,TARGET.Cpu
>> s % 8 =!= 0)
>> Â Â# eval_set_* rules
>> Â ÂEVALSET AccountingGroup ifThenElse(maxMemory =!= 
>> undefined,ifThenElse(maxMemory <= 
>> 2000,strcat("group_gatekpr.prod.",Owner),ifThenElse(maxMemory <= 
>> 3000,strcat("group_ga
>> tekpr.prod.",Owner,"_HMEM"),strcat("group_gatekpr.prod.",Owner,"_VHMEM"))),strcat("group_gatekpr.prod.",Owner))
>> Â ÂEVALSET JobLeaseDuration 7200
>> Â ÂEVALSET JobMemoryLimit maxMemory * 2.2 * 1024
>> Â ÂEVALSET RequestCpus ifThenElse(xcount =!= undefined,xcount,1)
>> Â ÂEVALSET RequestMemory maxMemory * 1.1
>> Â ÂEVALSET RequestVirtualMemory maxMemory * 2.2
>> @jre
>>
>>
>> Cheers!
>>
>> -Wenjing
>>
>> _______________________________________________
>> HTCondor-users mailing list
>> To unsubscribe, send a message to htcondor-users-request@xxxxxxxxxxx 
>> with a
>> subject: Unsubscribe
>>
>> The archives can be found at: https:// 
>> nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww- 
>> auth.cs.wisc.edu%2Flists%2Fhtcondor- 
>> users%2F&data=05%7C02%7Cluehring%40iu.edu%7Cfde57e3c291f43475e1908ddb9756f79%7C1113be34aed14d00ab4bcdd02510be91%7C1%7C0%7C638870636226986964%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=H3ofI1E9tcjS%2BejlD2PzTvgAEcq2REmfp%2B%2B1c%2FMz0NU%3D&reserved=0
> 


-- 
Please change my address luehring@xxxxxxxxxxx to luehring@xxxxxxx
All indiana.edu addresses will stop working in 2025.

Frederick Luehring luehring@xxxxxx       +1 812 855 1025  IU
Indiana U. HEP     Fred.Luehring@xxxxxxx +41 22 767 11 66 CERN