Я работаю над приложением, в котором тысячи задач связаны с с сотнями устройств, каждая из которых требует, < 5 мс для начала выполнения, а занимает в среднем 100 мс для завершения.Помощь с алгоритмом планирования задач
условия является таким, как, например:
- Каждого устройство может обрабатывать только одну задачу в то время, например, одна задачи должна завершить работу на назначенном устройства перед последующей задачей существ processeed.
- Планировщик должен быть эффективным. В настоящее время обработка рабочей очереди заданного устройства занимает больше времени, чем сумма его задач.
Вот основное описание текущей реализации:
Каждое устройство содержит рабочую очередь, которая заполняется с задачами, связанными с , что устройство.
Когда задача ставится в очередь, рабочая очередь этого устройства помещается в глобальную очередь выполнения (очередь очереди). Глобальная очередь выполнения потребляется рабочим потоком , который деактивирует объекты задачи устройства, обрабатывает один, затем помещает очередь устройств в обратную сторону глобальной очереди выполнения. Когда это заданное устройство снова вычеркнуто, рабочий поток проверяет, завершена ли задача, , если это так, выполняется следующая задача. Этот процесс продолжается до тех пор, пока все очереди устройств не будут исчерпаны задачами в глобальном runqueue.
Любые предложения по улучшению? Я ясно это сказал? Если нет, сообщите мне, и я сделаю все возможное, чтобы уточнить.
Спасибо, что нашли время посмотреть это. С уважением.
Может ли данная задача обрабатываться одним и только одним устройством или любое устройство может обрабатывать любую задачу? Что вы подразумеваете под «задача занимает <5 мс, чтобы начать выполнение»? Вы имеете в виду, что он должен быть запущен в течение 5 мс? (Если нет, то как этот факт имеет значение?) –
@Stephen - задача занимает <5 мс, чтобы начать выполнение, поскольку несколько шагов предшествуют выполнению задачи, например, с устройством необходимо связаться ... и т. Д. –
@Stephen - a задание или набор задач связано с уникальным устройством, поэтому для ответа на ваш вопрос: нет, любое устройство не может обработать какую-либо задачу. –