A method comprising: obtaining data splitting a plurality of general-purpose processing units (104a-104d) in a processor package of a processing system into a high-priority domain and a low-priority domain, each domain being associated with a respective memory controller (110a, 110b), wherein the processing system further comprises an accelerator package comprising a plurality of special-purpose hardware accelerators assigned to perform an accelerated workload, wherein the general-purpose processing units (104a-104d) in the high-priority domain are assigned to perform tasks comprising one or more high-priority tasks and one or more low-priority tasks, the general-purpose processing units (104a-104d) in the low-priority domain are assigned to perform only low-priority tasks, and wherein the high-priority tasks are tasks which support the accelerated workload; during runtime of the processing system, obtaining shared memory usage measurements that characterize usage of shared system memory by the high-priority domain and the low-priority domain; and adjusting (230, 240), based on the shared memory usage measurements, a configuration of (i) the high-priority domain, (ii) the low-priority domain, or (iii) both to adjust utilization of the shared system memory by the general-purpose processing units running low-priority tasks; wherein the shared memory usage measurements comprise a measurement of system memory saturation, including: broadcasting a distress signal to all of the general-purpose processing units (104a-104d) in the processor package when low-priority tasks in the low priority domain generate memory traffic that saturates the corresponding memory r controller's bandwidth; using a performance monitoring infrastructure to report a number of cycles in which the distress signal is asserted; quantifying the system memory saturation by dividing the number of cycles by a total number of cycles elapsed between two measurements; determining that the system memory saturation is high when the shared memory usage measurements exceed a high system memory saturation watermark; and in response to determining that the system memory saturation is high, reducing a number of active general purpose processors utilizing cache prefetching in the low-priority domain. obtaining data splitting a plurality of general-purpose processing units (104a-104d) in a processor package of a processing system into a high-priority domain and a low-priority domain, each domain being associated with a respective memory controller (110a, 110b), wherein the processing system further comprises an accelerator package comprising a plurality of special-purpose hardware accelerators assigned to perform an accelerated workload, wherein the general-purpose processing units (104a-104d) in the high-priority domain are assigned to perform tasks comprising one or more high-priority tasks and one or more low-priority tasks, the general-purpose processing units (104a-104d) in the low-priority domain are assigned to perform only low-priority tasks, and wherein the high-priority tasks are tasks which support the accelerated workload; the general-purpose processing units (104a-104d) in the high-priority domain are assigned to perform tasks comprising one or more high-priority tasks and one or more low-priority tasks, the general-purpose processing units (104a-104d) in the low-priority domain are assigned to perform only low-priority tasks, and wherein the high-priority tasks are tasks which support the accelerated workload; during runtime of the processing system, obtaining shared memory usage measurements that characterize usage of shared system memory by the high-priority domain and the low-priority domain; and adjusting (230, 240), based on the shared memory usage measurements, a configuration of (i) the high-priority domain, (ii) the low-priority domain, or (iii) both to adjust utilization of the shared system memory by the general-purpose processing units running low-priority tasks; wherein the shared memory usage measurements comprise a measurement of system memory saturation, including: broadcasting a distress signal to all of the general-purpose processing units (104a-104d) in the processor package when low-priority tasks in the low priority domain generate memory traffic that saturates the corresponding memory r controller's bandwidth; using a performance monitoring infrastructure to report a number of cycles in which the distress signal is asserted; quantifying the system memory saturation by dividing the number of cycles by a total number of cycles elapsed between two measurements; broadcasting a distress signal to all of the general-purpose processing units (104a-104d) in the processor package when low-priority tasks in the low priority domain generate memory traffic that saturates the corresponding memory r controller's bandwidth; using a performance monitoring infrastructure to report a number of cycles in which the distress signal is asserted; quantifying the system memory saturation by dividing the number of cycles by a total number of cycles elapsed between two measurements; determining that the system memory saturation is high when the shared memory usage measurements exceed a high system memory saturation watermark; and in response to determining that the system memory saturation is high, reducing a number of active general purpose processors utilizing cache prefetching in the low-priority domain.