Size: a a a

2020 May 27

VS

Vladimir Sh in pro.asm
Как блокировки на чисто программном уровне учтут все аппаратные особенности (кэши и т д)?
источник

VS

Vladimir Sh in pro.asm
Обе переменные в кэше одного проца, другой о них ни сном ни духом
источник

DB

Danil Braindead in pro.asm
Vladimir Sh
Как блокировки на чисто программном уровне учтут все аппаратные особенности (кэши и т д)?
То есть у вас флаг для алгоритма - обычная переменная, вы опрашиваете в цикле, а атомарную используете только для попыток захвата, которая соответственно процессором блокирует любое выполнение на системной шине
источник

ЕК

Евгений Красников (J... in pro.asm
Блин, работает алгоритм :))
Для двух потоков пока проверил.
Главное, не забыть mfence'ы выставить, иначе косячить будет.
источник

ЕК

Евгений Красников (J... in pro.asm
Только скорость... короче, lock inc N работает быстрее, чем эта бадяга.
И обычный spin-lock с xchg вокруг inc'а тоже быстрее работает.
Жаль...
источник

ЕК

Евгений Красников (J... in pro.asm
Короче, протестил я несколько алгоритмов: Петерсона, Деккера, Ламперта, xchg-spinlock и lock inc.

По убыванию скорости:
0. Без блокировок вообще (но с ошибками) [45-60K] 🤣
1. lock inc [30-31K]
2. xchg (логично, что медленнее lock inc'а) [19-21K]
3. Петерсон [10K]
4. Деккер [9.5K]
5. Лампорт [7.5K]

Числа в скобках — это кол-во inc'ов в секунду (в моих тестах на моём компе).
Но я только с двумя потоками пробовал.
Везде (кроме 0 и 1) стоят mfence'ы, без которых эти Петерсоны, Деккеры и Ламперты не работают, для xchg тоже поставил на всякий случай.

Короче, эти без-lock-овые алгоритмы годятся только для систем, в которых lock'и в принципе отсутствуют.

p.s. Есть ещё Шиманского (Szymański), а также Эйзенберга и МакГира (Eisenberg & McGuire), но они ещё более замороченные какие-то. Пока даже не стал тестить их.
источник
2020 May 31

DB

Danil Braindead in pro.asm
Евгений Красников (Jin X)
Короче, протестил я несколько алгоритмов: Петерсона, Деккера, Ламперта, xchg-spinlock и lock inc.

По убыванию скорости:
0. Без блокировок вообще (но с ошибками) [45-60K] 🤣
1. lock inc [30-31K]
2. xchg (логично, что медленнее lock inc'а) [19-21K]
3. Петерсон [10K]
4. Деккер [9.5K]
5. Лампорт [7.5K]

Числа в скобках — это кол-во inc'ов в секунду (в моих тестах на моём компе).
Но я только с двумя потоками пробовал.
Везде (кроме 0 и 1) стоят mfence'ы, без которых эти Петерсоны, Деккеры и Ламперты не работают, для xchg тоже поставил на всякий случай.

Короче, эти без-lock-овые алгоритмы годятся только для систем, в которых lock'и в принципе отсутствуют.

p.s. Есть ещё Шиманского (Szymański), а также Эйзенберга и МакГира (Eisenberg & McGuire), но они ещё более замороченные какие-то. Пока даже не стал тестить их.
Спасибо за вашу информацию, было бы великолепно, если бы вы могли еще и поделиться небольшими снипетами вашей реализации, благодарю
источник

ЕК

Евгений Красников (J... in pro.asm
Danil Braindead
Спасибо за вашу информацию, было бы великолепно, если бы вы могли еще и поделиться небольшими снипетами вашей реализации, благодарю
Вот весь проект, он на Delphi 7.
Там всё на коленке написано, конечно... :)

p.s. Кстати, значения там были в тысячах, т.е. 60K - это 60 млн, конечно :)
источник
2020 June 04

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮... in pro.asm
студенты в агонии
источник

ЕК

Евгений Красников (J... in pro.asm
Да я вот всё жду, когда 1000 будет.
Уже не первый месяц 900+, а потом, видимо, происходит чистка, и хопа — 800 :))
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮... in pro.asm
Евгений Красников (Jin X)
Да я вот всё жду, когда 1000 будет.
Уже не первый месяц 900+, а потом, видимо, происходит чистка, и хопа — 800 :))
1024
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮... in pro.asm
эт как юбилей при 256
источник

ЕК

Евгений Красников (J... in pro.asm
И это тоже.
источник

ЕК

Евгений Красников (J... in pro.asm
Мне когда было 32, я тоже говорил, что у меня круглая дата :))
источник

КП

Король Плутин... in pro.asm
Евгений Красников (Jin X)
Да я вот всё жду, когда 1000 будет.
Уже не первый месяц 900+, а потом, видимо, происходит чистка, и хопа — 800 :))
Телега очищается.
источник
2020 June 05

s

s54816 in pro.asm
Евгений Красников (Jin X)
Мне когда было 32, я тоже говорил, что у меня круглая дата :))
Круглая дата и всего лишь 20.
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮... in pro.asm
s54816
Круглая дата и всего лишь 20.
20битная шина в досе
источник

ЕК

Евгений Красников (J... in pro.asm
round data (data bus)
источник
2020 June 07

ЕК

Евгений Красников (J... in pro.asm
В винде в 32-х битах (в т.ч. в WoW64) CS всегда = 23h, а в 64-х битах = 33h ?
Под всегда я имею в виду версии винды, начиная с NT, скажем? Или с какой версии так стало?
источник

ЕК

Евгений Красников (J... in pro.asm
Потестил сам: в обычной 32-битной винде CS = 1Bh (до 7 точно, в 10-ке не знаю), только в WoW64 = 23h (7 и 10, других у меня нет).
У кого есть 32-битная 10-ка и 64-битная XP, можете потестить?
источник