Lines Matching refs:qos

68     for (auto qos = QoS::Min(); qos < QoS::Max(); ++qos) {
69 ctrlQueue[qos].maxConcurrency = DEFAULT_MAXCONCURRENCY;
70 if (qos > qos_max) {
71 ctrlQueue[qos].hardLimit = DEFAULT_HARDLIMIT - DEFAULT_SINGLE_NUM;
72 ctrlQueue[qos].reserveNum = 0;
73 qosWorkerConfig.mQosWorkerCfg[qos].reserveNum = 0;
74 qosWorkerConfig.mQosWorkerCfg[qos].hardLimit = DEFAULT_HARDLIMIT - DEFAULT_SINGLE_NUM;
77 ctrlQueue[qos].hardLimit = DEFAULT_HARDLIMIT;
78 ctrlQueue[qos].reserveNum = DEFAULT_SINGLE_NUM;
111 SetWorkerPara(qosWorkerConfig.mQosWorkerCfg[qosCfg.qos].maxConcurrency, qosCfg.maxConcurrency);
112 SetWorkerPara(qosWorkerConfig.mQosWorkerCfg[qosCfg.qos].hardLimit, qosCfg.hardLimit);
113 SetWorkerPara(qosWorkerConfig.mQosWorkerCfg[qosCfg.qos].reserveNum, qosCfg.reserveNum);
115 if ((qosWorkerConfig.mQosWorkerCfg[qosCfg.qos].maxConcurrency > MAX_MAXCONCURRENCY) ||
116 (qosWorkerConfig.mQosWorkerCfg[qosCfg.qos].hardLimit > GLOBAL_QOS_MAXNUM) ||
117 (qosWorkerConfig.mQosWorkerCfg[qosCfg.qos].reserveNum > GLOBAL_QOS_MAXNUM)) {
118 FFRT_LOGE("qos[%d],maxConcurrency[%d],hardLimit[%d],reserveNum[%d] is invalid",
119 qosCfg.qos, qosWorkerConfig.mQosWorkerCfg[qosCfg.qos].maxConcurrency,
120 qosWorkerConfig.mQosWorkerCfg[qosCfg.qos].hardLimit,
121 qosWorkerConfig.mQosWorkerCfg[qosCfg.qos].reserveNum);
136 unsigned int qos = qosData->qosConfigArray[i].qos;
137 if (qos >= QoS::MaxNum() || setWorkerNumQos[qos]) {
138 FFRT_LOGE("qos[%d] is invalid or repeat setting", qos);
141 setWorkerNumQos[qos] = true;
177 FFRT_LOGE("qos config data setting repeat");
193 FFRT_LOGE("Can only be set during initiallization,qos[%d], executionNum[%d],sleepingNum[%d]",
217 FFRT_LOGI("succ:qos[%d], reserveNum[%d], maxConcurrency[%d], hardLimit[%d]",
268 bool CPUMonitor::IsExceedRunningThreshold(const QoS& qos)
270 if (blockAwareInit && exceedUpperWaterLine[qos()]) {
271 exceedUpperWaterLine[qos()] = false;
283 void CPUMonitor::TimeoutCount(const QoS& qos)
285 WorkerCtrl& workerCtrl = ctrlQueue[static_cast<int>(qos)];
289 ReleasePublicWorkerNum(qos);
295 void CPUMonitor::WakeupCount(const QoS& qos, bool isDeepSleepWork)
297 WorkerCtrl& workerCtrl = ctrlQueue[static_cast<int>(qos)];
304 void CPUMonitor::DoDestroy(const QoS& qos)
306 WorkerCtrl& workerCtrl = ctrlQueue[static_cast<int>(qos)];
310 ReleasePublicWorkerNum(qos);
314 int CPUMonitor::WakedWorkerNum(const QoS& qos)
316 WorkerCtrl& workerCtrl = ctrlQueue[static_cast<int>(qos)];
321 int CPUMonitor::SleepingWorkerNum(const QoS& qos)
323 WorkerCtrl& workerCtrl = ctrlQueue[static_cast<int>(qos)];
328 bool CPUMonitor::HasDeepSleepWork(const QoS& qos)
330 WorkerCtrl& workerCtrl = ctrlQueue[static_cast<int>(qos)];
335 void CPUMonitor::IntoDeepSleep(const QoS& qos)
337 WorkerCtrl& workerCtrl = ctrlQueue[static_cast<int>(qos)];
343 void CPUMonitor::OutOfDeepSleep(const QoS& qos)
345 WorkerCtrl& workerCtrl = ctrlQueue[static_cast<int>(qos)];
353 void CPUMonitor::IntoPollWait(const QoS& qos)
355 WorkerCtrl& workerCtrl = ctrlQueue[static_cast<int>(qos)];
361 void CPUMonitor::OutOfPollWait(const QoS& qos)
363 WorkerCtrl& workerCtrl = ctrlQueue[static_cast<int>(qos)];
393 qos(), lowQosUseGlobalWorkerToken->load(), highQosUseGlobalWorkerToken->load());
409 qos(), lowQosUseGlobalWorkerToken->load(), highQosUseGlobalWorkerToken->load());
415 bool CPUMonitor::TryAcquirePublicWorkerNum(const QoS& qos)
417 return qos() <= ffrt_qos_default ? LowQosUseReserveWorkerNum() : HighQosUseReserveWorkerNum();
420 void CPUMonitor::ReleasePublicWorkerNum(const QoS& qos)
422 if (qos() <= ffrt_qos_default) {
449 FFRT_LOGD("succ:qos[%d], reserveNum[%d], maxConcurrency[%d], hardLimit[%d], runningNum[%d], totalNum[%d]",
453 void CPUMonitor::Poke(const QoS& qos, uint32_t taskCount, TaskNotifyType notifyType)
455 WorkerCtrl& workerCtrl = ctrlQueue[static_cast<int>(qos)];
463 if (workerCtrl.executionNum >= domainInfoNotify.localinfo[qos()].nrBlocked) {
465 runningNum = workerCtrl.executionNum - domainInfoNotify.localinfo[qos()].nrBlocked;
467 FFRT_LOGE("qos [%d] nrBlocked [%u] is larger than executionNum [%d].",
468 qos(), domainInfoNotify.localinfo[qos()].nrBlocked, workerCtrl.executionNum);
483 ops.WakeupWorkers(qos);
485 (totalNum < workerCtrl.reserveNum || TryAcquirePublicWorkerNum(qos))) {
487 FFRTTraceRecord::WorkRecord(static_cast<int>(qos), workerCtrl.executionNum);
489 ops.IncWorker(qos);
492 FFRTFacade::GetPPInstance().GetPoller(qos).WakeUp();
494 FFRT_LOGD("noInc:qos[%d],reserveNum[%d],maxConcurrency[%d],hardLimit[%d],runningNum[%d],totalNum[%d]",
495 qos(), workerCtrl.reserveNum, workerCtrl.maxConcurrency, workerCtrl.hardLimit, runningNum, totalNum);
500 void CPUMonitor::NotifyWorkers(const QoS& qos, int number)
502 WorkerCtrl& workerCtrl = ctrlQueue[static_cast<int>(qos)];
509 ops.WakeupWorkers(qos);
515 if (idx < incPublicNum || TryAcquirePublicWorkerNum(qos)) {
517 ops.IncWorker(qos);
519 FFRT_LOGD("Fail:qos[%d],reserveNum[%d],maxConcurrency[%d],hardLimit[%d],totalNum[%d],idx[%d],inc[%d]",
520 qos(), workerCtrl.reserveNum, workerCtrl.maxConcurrency, workerCtrl.hardLimit,
526 FFRT_LOGD("qos[%d] inc [%d] workers, wakeup [%d] workers", static_cast<int>(qos), incNumber, wakeupNumber);
530 void CPUMonitor::HandleTaskNotifyDefault(const QoS& qos, void* p, TaskNotifyType notifyType)
533 size_t taskCount = static_cast<size_t>(monitor->GetOps().GetTaskCount(qos));
538 monitor->Poke(qos, taskCount, notifyType);
542 monitor->Poke(qos, taskCount, notifyType);
550 void CPUMonitor::PokeAdd(const QoS& qos)
552 WorkerCtrl& workerCtrl = ctrlQueue[static_cast<int>(qos)];
563 runningNum = workerCtrl.executionNum - domainInfoNotify.localinfo[qos()].nrBlocked;
568 (totalNum < workerCtrl.reserveNum || TryAcquirePublicWorkerNum(qos))) {
571 ops.IncWorker(qos);
574 FFRTFacade::GetPPInstance().GetPoller(qos).WakeUp();
576 FFRT_LOGD("noInc:qos[%d],reserveNum[%d],maxConcurrency[%d],hardLimit[%d],runningNum[%d],totalNum[%d]",
577 qos(), workerCtrl.reserveNum, workerCtrl.maxConcurrency, workerCtrl.hardLimit, runningNum, totalNum);
583 void CPUMonitor::PokePick(const QoS& qos)
585 WorkerCtrl& workerCtrl = ctrlQueue[static_cast<int>(qos)];
588 if (workerCtrl.hasWorkDeepSleep &&GetOps().GetTaskCount(qos) == 0) {
595 ops.WakeupWorkers(qos);
602 runningNum = workerCtrl.executionNum - domainInfoNotify.localinfo[qos()].nrBlocked;
607 (totalNum < workerCtrl.reserveNum || TryAcquirePublicWorkerNum(qos))) {
610 ops.IncWorker(qos);
613 FFRTFacade::GetPPInstance().GetPoller(qos).WakeUp();
615 FFRT_LOGD("noInc:qos[%d],reserveNum[%d],maxConcurrency[%d],hardLimit[%d],runningNum[%d],totalNum[%d]",
616 qos(), workerCtrl.reserveNum, workerCtrl.maxConcurrency, workerCtrl.hardLimit, runningNum, totalNum);