Комментарии 13
Вот еще отличная статья на эту тему. Причем рассматривается та же проблема с общим массивом. www.1024cores.net/home/lock-free-algorithms/false-sharing---false. Вообще рекомендую этот блог для всех интересующихся многопоточностью.
Отличная статья. Спасибо.
Отличная статья. Спасибо.
+2
Если не ошибаюсь, в java 8 появится sun.misc.Contended аннотация, которую можно будет вешать на класс или его поле/поля, чтобы избежать False sharing'а.
mail.openjdk.java.net/pipermail/hotspot-dev/2012-November/007309.html
mail.openjdk.java.net/pipermail/hotspot-dev/2012-November/007309.html
+2
при этом тот факт, что она sun.misc какбэ камекает, что это аннотация для разработчиков Java для использования внутри JDK, а не для программеров :)
0
как бе тонкий намёк, что разработчики java != программеры?
и sun.misc.Unsafe, и sun.misc.Cleaner часто используемые и как бы не мешает жить
и sun.misc.Unsafe, и sun.misc.Cleaner часто используемые и как бы не мешает жить
+1
часто используемые кем? Тобой? Или 99% java-программеров? Я вот вижу между ними и тобой некоторую разницу)))
0
В докладе ForkJoinPool в Java 8 Алексей Шипилёв (TheShade) с 1h2m20s по 1h8m20s рассказывает что такое false sharing и почему предложенный вами способ борьбы с ним (padding) не надежен.
Так же он рассказывает про надежный метод борьбы с false sharing: @sun.misc.Contended.
Так же он рассказывает про надежный метод борьбы с false sharing: @sun.misc.Contended.
+4
До выхода Java 8, к сожалению, sun.misc.Contended в production недоступен. Padding c применением наследования используется в jmh. Из BlackHole.java:
* 1. Superclass fields are not reordered with the subclass' fields.
* No practical VM that we are aware of is doing this. It is unpractical,
* because if the superclass fields are at the different offsets in two
* subclasses, the VMs would then need to do the polymorphic access for
* the superclass fields.
0
Не является ли борьба с False sharing экономией на спичках? То есть так — правильно ли я понял, что бороться с этим явлением стоит только в библиотеках уровня ядра для приложений, которые должны работать максимально быстро?
+2
Совершенно верно, в 99% случаев это не нужно. Но если разрабатывется нечто похожее на LMAX Disruptor или многопоточный расчетный алгоритм, то нужно иметь в виду такой эффект.
Использование VTune или его аналогов на других платформах, поможет оценить эффективность HPC приложения на уровне счетчиков CPU.
Использование VTune или его аналогов на других платформах, поможет оценить эффективность HPC приложения на уровне счетчиков CPU.
+2
Можете приоткрыть завесу тайны и рассказать, что же именно за задача такая?
0
Параллельная обработка на базе Storm framework. Я о нем писал на хабре.
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
False sharing в многопоточном приложении на Java