Множество потоков, соревнующихся между собой за обладание единственным ресурсом

Множество потоков, соревнующихся между собой за обладание единственным ресурсом

Целью этой серии тестов являлось сравнение эффективности различных стратегий реализации функций управления очередями программы 10.4 с использованием программы 10.5 (трехступенчатый конвейер) в качестве тестового приложения. Тесты выполнялись на четырехпроцессорной (Intel Xeon, 1 ГГц) системе Windows 2000 Server с организацией 1, 2, 4, 8, 16, 32 и 64 потоков, но во всех семи случаях каждого потока поручалось выполнение 1000 единиц работы. В идеальном случае можно было бы ожидать линейного увеличения реального времени с увеличением количества потоков, но соревновательность между потоками за право владения единственным мьютексом (или объектом CS) может приводить к нелинейному снижению этого показателя). Обратите внимание, что эти тесты не затрагивают файловую систему.

Использовались шесть различных стратегий реализации, результаты применения которых представлены в отдельных столбцах табл. В.5.

Таблица В.5. Производительность многопоточных реализаций на четырехпроцессорном сервере

К-во потоков Широковещат.модель Широковещат.модель Широковещат. модель Сигнальная модель Сигнальная модель Сигнальная модель
Mtx, Evt CritSec, Evt Mtx, Evt Mtx, Evt CritSec, Evt Mtx, Evt
Т/О 5мс Т/О 25мс SigObjWait Т/О неопределен Т/О неопределен SigObjWait
1 Реальное время 0,03 0,03 0,05 0,05 0,03 0,05
Пользовательское время 0,03 0,06 0,03 0,05 0,08 0,05
Системное время 0,06 0,02 0,09 0,08 0,02 0,06
2 Реальное время 0,14 0,27 0,09 0,08 0,06 0,08
Пользовательское время 0,13 0,05 0,14  0,17 0,11 0,08
Системное время 0,11 0,06 0,16 0,09 0,11 0,17
4 Реальное время 0,39 0,59 0,23 0,19 0,16 0,20
Пользовательское время 0,18 0,17 0,22 0,26 0,17 0,19
Системное время 0,30 0,22 0,41 0,31 0,22 0,31
8 Реальное время 0,83 0,92 0,73 0,36 0,34 0,36
Пользовательское время 0,34 0,36 0,55 0,52 0,45 0,45
Системное время 0,98 1,00 1,00 0,69 0,39 0,75
16 Реальное время 2,42 2,30 2,38 0,75 0,69 0,75
Пользовательское время 1,17 1,31 1,22 0,81 0,81 0,88
Системное время 3,69 3,05 3,39 1,45 1,08 1,33
32 Реальное время 7,56 7,50 7,98 1,50 1,50 1,50
Пользовательское время 3,33 3,73 2,56 1,75 1,69 1,78
Системное время 12,52 10,72 11,03 3,13 2,00 2,69
64 Реальное время 27,72 26,23 29,31 3,14 2,95 3,20
Пользовательское время 7,89 10,75 7,22 3,73 3,69 3,47
Системное время 46,70 40,33 36,67 6,28 3,89 5,47

В комментариях, помещенных вслед за программой 10.4, обсуждаются результаты и разъясняются преимущества различных реализаций, а здесь мы лишь отметим, что результаты для сигнальной модели изменяются пропорционально изменению количества потоков, тогда как в случае широковещательной модели, особенно для вариантов с 32 и 64 потоками, это не так. Можно также видеть, что в случае широковещательной модели система потребляет значительную долю процессорного времени, ибо выполняются, вычисляют предикат и осуществляют немедленный возврат в состояние ожидания множество потоков.

1. Широковещательная модель, мьютекс (Mtx), событие (Evt), раздельные вызовы функций освобождения и ожидания. Конечный период ожидания (Time-out, TO) устанавливался равным 5 миллисекундам, что являлось оптимальным значением для 16-поточного варианта.

2. Широковещательная модель, объект CRITICAL_SECTION (CritSec), событие, раздельные вызовы функций освобождения и ожидания. Настраиваемый период ожидания устанавливался равным 5 миллисекундам, что являлось оптимальным значением для 16-поточного варианта.

3. Широковещательная модель, мьютекс, событие, атомарный вызов SignalObjectAndWait (SigObjWait).

4. Сигнальная модель, мьютекс, событие, раздельные вызовы функций освобождения и ожидания.

5. Сигнальная модель, объект CRITICAL_SECTION, событие, раздельные вызовы функций освобождения и ожидания.

6. Сигнальная модель, мьютекс, событие, атомарный вызов SignalObjectAndWait.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Довольны ли вы собой?

Из книги Как найти высокооплачиваемую работу с помощью Internet автора Рудинштейн Марк


Будьте собой

Из книги Getting Real (на русском) [вычитывается] автора 37signals

Будьте собой Дифференцируйте себя от больших компаний, будьте дружественнее и доступнееМного маленьких компаний делают ошибку в попытках действовать как большие. Как будто бы они не замечают свой размер. Это как слабость, комплекс, который нужно скрывать, и это слишком


Множество (Set)

Из книги Руководство по стандартной библиотеке шаблонов (STL) автора Ли Менг

Множество (Set) set - это ассоциативный контейнер, который поддерживает уникальные ключи (не содержит ключи с одинаковыми значениями) и обеспечивает быстрый поиск ключей.template ‹class Key, class Compare = less‹Key›, template ‹class U› class Allocator = allocator›class set {public: // typedefs: typedef Key key_type; typedef Key


2.2.1.4 Разделение потоков между виртуальными процессорами.

Из книги Руководство администратора баз данных Informix. автора Кустов Виктор

2.2.1.4 Разделение потоков между виртуальными процессорами. Для каждого класса поддерживаются три очереди потоков, которые разделяются всеми виртуальными процессорами данного класса: Очередь готовых к выполнению потоков.Очередь спящих потоков. В нее помещается,


Приложение с единственным окном

Из книги Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT автора Фролов Александр Вячеславович

Приложение с единственным окном Первое созданное нами приложение не имело главного окна. Для вывода сообщения на экран мы использовали функцию AfxMessageBox, которая очень похожа на функцию MessageBox программного интерфейса операционной системы Windows.Следующее приложение,


Что берем с собой?

Из книги Популярный самоучитель работы в Интернете автора Кондратьев Геннадий Геннадьевич

Что берем с собой? В состав обозревателя Интернета входят следующие программы.– Браузер Internet Explorer (IE)[26] . С его помощью мы будем просматривать веб-страницы во всем их многообразии и великолепии.– Outlook Express (OE). С помощью этой программы мы будем работать с почтой и группами


У11.11 Модуль "множество"

Из книги Основы объектно-ориентированного программирования автора Мейер Бертран

У11.11 Модуль "множество" Напишите класс, реализующий множество элементов произвольного типа со стандартными операциями: проверка принадлежности, добавление нового элемента, объединение, пересечение и другими. Не забудьте включить подходящие утверждения. Приемлема любая


Стеки потоков и допустимые количества потоков

Из книги Системное программирование в среде Windows автора Харт Джонсон М

Стеки потоков и допустимые количества потоков Следует сделать еще два предостережения. Во-первых, подумайте о размере стека, который по умолчанию составляет 1 Мбайт. В большинстве случаев этого будет вполне достаточно, но если существуют какие-либо сомнения на сей счет,


Что представляет собой спам и как с ним бороться?

Из книги Интернет на 100%. Подробный самоучитель: от «чайника» – до профессионала автора Гладкий Алексей Анатольевич

Что представляет собой спам и как с ним бороться? Трудно найти в настоящее время пользователя, который бы не был наслышан о проблеме спама. Что же представляет собой спам, откуда он берется, как его распознать и как можно от него защититься?Спам представляет собой один из


Что представляет собой современный веб-сайт?

Из книги Веб-Самоделкин. Как самому создать сайт быстро и профессионально автора Гладкий Алексей Анатольевич

Что представляет собой современный веб-сайт? Итак, что же представляет собой современный веб-сайт? На этот вопрос мы попытаемся ответить в данном разделе.Очень многое зависит от того, кто и с какой целью создал сайт, каково его информационное наполнение, выполнена ли


Множество привилегий и множество получателей привилегий

Из книги Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ автора Борри Хелен

Множество привилегий и множество получателей привилегий Есть возможность предоставлять несколько привилегий в одном операторе и предоставлять одну или более привилегий множеству пользователей или объектов.Множество привилегийДля предоставления получателю


Множество О

Из книги Разработка ядра Linux автора Лав Роберт