BGProcessingTaskRequest gets killed due to high cpu usage

I have an app that is requesting a BGProcessingTaskRequest -- this is the type of background activity that is encouraged to use if you have a process that is long running and advertised to even be able to retrain a machine learning model.

My background processing generally uses a DispatchQueue.global(qos: .background)) but I can't completely control this as I also for instance use a private Core Data background context.

However, my process gets killed due to cpu usage.

Event:            cpu usage
Action taken:     Process killed
CPU:              48 seconds cpu time over 55 seconds (87% cpu average), exceeding limit of 80% cpu over 60 seconds
CPU limit:        48s
Limit duration:   60s
CPU used:         48s
CPU duration:     55s
Duration:         55.24s
Duration Sampled: 40.95s
Steps:            22

Why is iOS imposing a CPU limit when the process is advertised as "A request to launch your app in the background to execute a processing task that can take minutes to complete.". The device was also plugged in during the crash.

The high cpu usage obviously is on purpose and also happens in a low-level Accelerate framework operation that I could not even throttle if I wanted to.

Any idea what I am doing wrong?

Replies

See this thread.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

I am not sure if that other thread helps me but thanks for sharing. I filed this as FB9650676.

If you are coming here for a solution. Radar feedback was, that only with requiresExternalPower property, the cpu usage is "unlimited". I have not tried yet but wanted to share.