Як тестувати та орієнтувати реалізацію mutex


12

Як зазначається в заголовку: Як ви належним чином тестуєте та орієнтуєте різні реалізації мутексів у c ++?

По суті, я написав свій власний std :: mutex like class для проекту, що працює на двох ядрах, armv7 з метою мінімізувати накладні витрати в беззаперечному випадку. Тепер я розглядаю можливість використання зазначеного мютексу в інших місцях, а також різних архітектурах, але перш ніж це зробити, я хотів би переконатися в цьому

  • це насправді правильно
  • не існує жодних патологічних випадків, в яких він працює набагато гірше, ніж у стандартного std :: mutex.

Очевидно, я написав кілька тестів на базові одиниці та мікро-орієнтири, і все, здається, працює, але в багатопотоковому коді "начебто працює" не дає мені великого комфорту.

  • Отже, чи існують усталені методи статичного чи динамічного аналізу?
  • Які загальні підводні камені під час написання одиничних тестів для мутексних класів?
  • На які типові крайові випадки слід звернути увагу (на ефективність)?

Я використовую лише типові бібліотечні типи для реалізації, що включає не послідовні послідовні операції завантаження та зберігання на атомі. Однак мене в основному цікавлять поради щодо агностики щодо впровадження, оскільки я хотів би використовувати те саме тестовий ремінь і для інших реалізацій.


2
Я знаю, що це не потрібно, але я вдячний, якби поточні особи прокоментували проблему в цьому питанні. Я новачок у SE та не зовсім знайомий із особливостями цього сайту.
MikeMB

3
Не виборчий виборець, але я скажу, що цей сайт особливо поганий для анонімних голосів вниз на ідеально хороші питання. Мені здається, що дуже багато людей, які голосують вниз, виходячи з того, що я б назвав "релігійними" причинами. Однак, одна з можливостей полягає в тому, що ви запитуєте рекомендації щодо інструментів, які, на мою думку, тут нахмурені . Але це лише здогадка. І багато людей обговорювали подібні інструменти в інших питаннях, тож робіть з того, що вам захочеться.
користувач1118321

4
Насправді перегляньте цей мета-пост під назвою "Схильність, тому що ми не згодні з підходом або логікою запитувача".
користувач1118321

@ user1118321: цей мета-пост не підходить до цього питання, оскільки IMHO в цьому питанні не існує помилкового припущення. Однак два з 3 закритих голосів, які я зараз бачу, використовують попередньо визначений "запит на сторонні ресурси". MikeMB, ви можете спробувати відредагувати своє питання та видалити ці частини з нього, однак у поточній формі я думаю, що спільнота також може закрити його за занадто широкий. Якщо ви звузите фокус питання і конкретно запитаєте, що ви хочете перевірити і що ви намагалися до цього часу, ви можете збільшити шанс вижити своє питання.
Док Браун

Одна з проблем цього питання полягає в тому, що "Питання, що пропонують нам знайти або рекомендувати інструменти, бібліотеки, мови програмування, ресурси (включаючи книги, блоги, навчальні посібники та приклади), або проекти, які потрібно здійснити, тут є поза темою, оскільки вони залучають впевнені відповіді, що не матиме тривалої цінності для інших ".
Девід Хаммен

Відповіді:


1

Питання складне:

Деякі джерела складності включають:

  • Скільки контекстних комутаторів відбувається: Це дуже важливо залежно від платформи, на якій працюють ці тести. Деякі платформи справляються з цим краще, ніж інші
  • Чи є функції, які мутекси випробовують впорядкованими чи ні. тобто чи добре працює мютекс лише в добре оптимізованому або оптимізованому коді.
  • Ці мутекси створені для кеш-локації. Помилки кеша значно знизять продуктивність або спричинить більше контекстних комутацій. до і після введення мютексу.
  • Чи сама мутекс спричинить втрату локальності кешу. тобто динамічно розподіляються дані про стан мутексу.
  • Чи добре працюватимуть ці мутекси, якщо контекстні комутатори містяться в файлі. тобто io, malloc і т.д.
  • Чи буде мутекс добре працювати, якщо час ядра міститься в динамічному розподілі пам’яті mutex.ie та деалокації.
  • Чи працює продуктивність під час роботи в межах VM
  • Чи руйнування або побудова мутексу є дорогим, тобто дані про стан знаходяться в динамічній пам'яті

1
Не впевнений, чи згоден я з частиною будівництва / руйнування. Якщо програма постійно створює та знищує ваші мутекси, з дизайнерським дизайном (імхо) щось не так. Але інакше дякую за покажчики.
MikeMB

-1

Ваша ідея дуже цікава: орієнтир відповідності, на який може бути протестована імплементація файлів.

На жаль, наскільки я міг бачити, немає широко відомих орієнтирів відповідності для реалізації mutex. Тож, мабуть, у вас в руках дуже цікава проблема створення пропозиції щодо такого критерію відповідності.

І, оскільки ви брали участь у створенні еталонного впровадження, ви - хлопець.

Якщо ви дозволите мені пропозицію, можливо, ви могли б розпочати це дослідження зі стандарту POSIX для потоків в одну сторону, а також з деякого вивчення теоретичної літератури паралельної обробки, як, наприклад, CSP, або комунікації послідовних процесів. Цей вид робіт зазвичай стосується класичних одночасних проблем, як філософи їдалень.

Можливо, реалізація їх може стати цікавою частиною вашого орієнтиру відповідності.


3
Я не відповідав вам, але це, здається, не відповідає на жодне моє запитання.
MikeMB

Дякуємо за те, що не звернули увагу. І шкода, що не відповів на ваші запитання. Не заперечуєте, якщо я запитаю вас, чи плануєте ви створити орієнтир відповідності для мютексів?
Хілтон Фернандес

Навряд чи. І навіть якщо я єдиний стандарт, який мене хвилює, це стандарт c ++ (хоча це може бути те саме, що і позікс щодо
мютексів

Щоб кваліфікувати моє попереднє твердження: Якщо мені слід створити гарний тестовий набір для власного файлу, я, швидше за все, зроблю його відкритим кодом, але я дуже сумніваюся, що він буде мати якість або бути достатньо повною, щоб стати фактичним Тест на "відповідність" - це може бути щось, що краще вирішувати статичний аналіз.
MikeMB

Я погоджуюсь з вами, що не існує хорошого набору тестів для примітитів з мютекс. Я припускаю, що він повинен походити з трьох різних джерел: теорії паралельної обробки, специфікації мутексу POSIX та паралельних алгоритмів, виражених за допомогою мутексів. Чи згодні ви з цим?
Хілтон Фернандес
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.