Счетчики производительности для TPL?

Есть ли способ увидеть (желательно с помощью встроенного счетчика производительности), сколько работы TPL поставил в очередь, которую он пытается выполнить?

Вот некоторые подробности того, что я пытаюсь сделать и что вижу:

У меня большая рабочая нагрузка, которую я выгружаю на .NET Threadpool с помощью Task.Factory.StartNew () (по умолчанию планировщик). Когда нагрузка больше, чем может выдержать моя система, работа выстраивается в очередь до тех пор, пока либо нагрузка не уменьшится, либо у меня не закончится память.Я обновляю настраиваемый счетчик производительности (это посекундный счетчик) как часть моей обработки, и я вижу, что этот счетчик не превышает 27000 (сообщений в секунду) независимо от того, сколько сообщений я помещаю в очередь. Task.Factory.StartNew ().

Мой вопрос больше связан с мониторингом, чем с советами по улучшению работы системы - я могу выполнять микрооптимизации, но на данный момент счетчики производительности не видят, что работа накапливается. Помимо оптимизации, я хотел бы иметь возможность точно увидеть, сколько работы TPL было отложено в буфер, просто чтобы я мог оценить скорость отклика моей системы. Я хочу посмотреть, приведет ли ввод нового сообщения на входную сторону к немедленной обработке (нулевой задержке) или возникнет некоторая задержка, прежде чем я увижу результаты своего запроса.

Теперь происходит следующее: ниже 27 000 сообщений в секунду, если я прекращаю ввод, я вижу, что счетчик «Количество обработанных сообщений в секунду» обнуляется. Выше этой критической точки счетчик продолжает регистрировать 27 КБ в секунду в течение некоторого времени (в зависимости от того, как долго я позволяю накопиться невыполненной работе), пока остальная нагрузка не пройдет через систему.

6
задан Terence Lewis 26 October 2011 в 08:48
поделиться