пятница, 27 ноября 2009 г.

Boxing is an enemy of concurrency

Пост Дуга Ли о вреде boxing'а:
http://mail.openjdk.java.net/pipermail/closures-dev/2009-November/000342.html

Последний абзац:
I really,
really don't want to do is release an overhyped
facility for parallel programming that doesn't
actually speed up anyone's applications.
... про STM что-ли :)

1 комментарий:

  1. Диалог прошел тут - http://rsdn.ru/forum/java/3617915.aspx.
    -----
    http://rsdn.ru/forum/java/3622818.aspx:
    Похоже на STM.
    Я только вот такого не пойму
    " So you not only get a lot more cache misses (which are increasingly very expensive ) but you also have cacheline ping-ponging due to different data items being operated on by different threads just so happening to be nearby."
    "more cache misses" — согласен дополнительный уровень indirection этому способствует.
    но
    "cacheline ping-ponging" == "false sharing" ???

    в чем сомнения
    1) кэш-линия — это отображение непрерывной области памяти
    2) выделение памяти зачастую происходит из специального пула памяти потока (тоже непрерывный кусок)
    т.е. если поток сам себе выделяет память — то ложное разделение должно быть крайне редким. Актуально если выделяет один поток объекты(master), а потом раздает их другим (slaves). В таком случае слэйвы будут делить кэшлинии и причем постоянно.
    Но в реализациях STM зачастую нет мастер-потока, т.е. выделение системных объектов либы происходит в потоке юзера. И как бы, ложное разделение должно быть крайне не частым.

    http://rsdn.ru/forum/java/3624855.aspx:
    Насколько я понял, все его предыдущие рассуждения, в т.ч. и про ping-ponging, не относились к STM.

    ОтветитьУдалить