@jvmchat

Страница 2565 из 2890
Pavel ?
20.06.2018
19:14:47
Фото зачёт)

Vik
20.06.2018
19:14:55
Мужик сзади как-то недобро глядит

Скажите мне к вот это вообще нормально https://twitter.com/agaro1121/status/1009505596293419010?

guga
20.06.2018
19:18:30
Мужик сзади как-то недобро глядит
наверное потому что ты не его обнимаешь

Google
KrivdaAllStars
20.06.2018
19:18:45
@dmsol добавь в ништяки ваши видео)

Grigory
20.06.2018
19:18:56
правда подизмененная интересный хак

KrivdaAllStars
20.06.2018
19:19:52
Скажите мне к вот это вообще нормально https://twitter.com/agaro1121/status/1009505596293419010?
https://www.youtube.com/watch?v=zDQ7tNpjpEI&index=1&list=PL9SJrES3EGUTaiSjO-WhtcoavlnfafLik нужно тебе к нам на курс

1337
20.06.2018
19:20:42
день толерантности к скалистам

Pavel ?
20.06.2018
19:35:22
T is covariant, so <:<##<О_О<:< must be used, =:=o!o=:= cannot be

Anton
20.06.2018
20:25:57
1337
20.06.2018
20:31:53
> какие-то наSCALьные иероглифы из черточек и точек > нормально

Евгений
20.06.2018
20:37:28
нормально

Митко Соловец?
20.06.2018
21:15:14
Vladimir
20.06.2018
21:20:02
кто-нибудь может объяснить, как работает CAS в multicore-среде? в частности, интересует простейший инкремент числа. если операция производится несколькими потоками, которые выполняются на одном цп, то из-за атомарности CAS-а состояние гонки не возникает, а меня интересует, что будет, когда два потока на разных цпу одновременно выполнят CAS. в итоге же обе операции заканчиваются записью значения в рам, как они друг друга не перезаписывают? или есть какие-то средства для корректного осуществления атомарных операций на разных цп? или вообще не стоит с этим заморачиваться?

вот есть поток А на цп 1, поток Б на цп 2, оба абсолютно одновременно (разные цп, не многозадачность) начали CAS на общей переменной, равной 0, оба проверили актуальное значение и сравнили со значением из памяти, оно равно 0, записали измененное значение, и в итоге должна получиться единица вместо двойки, если первый произвел запись чуть раньше второго? я понимаю, что все эти действия - это одна операция, но как эти операции синхронизируются между собой на разных цп, ведь это независимые операции? или все это происходит как-то иначе? не cache coherence ли?

Google
Vladimir
20.06.2018
21:36:15
т.е нужно углубиться в то, как это реализовано на машинном уровне?

Vladimir
20.06.2018
21:37:15
да)
а джава-разработчикам вообще нужно залезать так глубоко?

Pavel ?
20.06.2018
21:37:20
там все просто) просто у амд и интела инструкция появилась

атомарная

Alexander
20.06.2018
21:37:27
хороший ответ

Pavel ?
20.06.2018
21:37:29
ее и используют)

Alexander
20.06.2018
21:37:39
как тебе не скажу, но погугли сам, там все написано

а как роботате это атормана инструкция

Pavel ?
20.06.2018
21:38:19
Alexander
20.06.2018
21:39:04
на самом деле нет

по сути все упирается в одну инструкцию, а как она работает и как кэш лайны там обрабатываются это уже такое себе знание, которое нужно разве что для того, что бы глянуть, что там стучит со дна

Pavel ?
20.06.2018
21:41:48
да, как-то так, щас будет след. вопрос что такое кеш лайн)

что ты людей путаешь)

Alexander
20.06.2018
21:42:28
и сразу можно отправить гуглить всякие mesifы

Ed
20.06.2018
21:49:39
Когерентность кешей

Google
Ed
20.06.2018
21:49:54
И никакой записи в память

Alexander
20.06.2018
21:50:13
память не нужна

Ed
20.06.2018
21:50:31
Мне кажется, или раз в неделю этот вопрос поднимается?)

Pavel ?
20.06.2018
21:51:03
ну да) в данном случае эта вся хрень не нужна, как мне кажется)

Vladimir
20.06.2018
22:00:24
в общем, насколько я понял, грубо говоря - это достигается за счет локов, а что там и как все это происходит в деталях, знать необязательно, по крайней мере работая с джавой

Vladimir
20.06.2018
22:02:52
имеешь в виду на уровне языка?

Pavel ?
20.06.2018
22:03:07
подхода в целом)

если говорить про жабу то там это реализовано на уровне unsafe) покопай там)

Vladimir
20.06.2018
22:06:11
Да, лазил по AtomicXXX. А начиная с J8, как я понимаю, все AtomicXXX поддерживают updateAndGet, который этот цикл и организует, поэтому необходимость в написании своего цикла с compareAndSet отпадает

Pavel ?
20.06.2018
22:06:22
когда кстати этот unsafe снесут?))

Alexander
20.06.2018
22:06:54
https://spcl.inf.ethz.ch/Publications/.pdf/atomic-bench.pdf

Alexander
20.06.2018
22:07:50
давайте копнем глубже говорили они

Vladimir
20.06.2018
22:10:14
атомики вроде компарусет и своп из unsafe юзают)
да, но просто до 8 нужно было писать свой цикл, в котором бы вызывался compareandset, который уже дергает ансейф, а сейчас этот цикл организовали в общем виде с функцией



Ed
20.06.2018
22:13:01
Как без Unsafe жить то?

Сколько проектов you offheap

Используют*

Google
Marat
20.06.2018
22:15:13
а зачем использовать жабки ниже восьмой версии?
до сих пор есть "любители" вебсферы

Alexander
20.06.2018
22:18:45
Pavel ?
20.06.2018
22:32:38
а зачем использовать жабки ниже восьмой версии?
ну например дядя сказал юзать 6 и баста)

Admin
ERROR: S client not available

Ed
20.06.2018
22:40:33
Мы тоже юзаем offheap, обмазались, конечно. Но если будут выпиливать, то форкать

Evgeny
20.06.2018
22:40:36
Дима, я не сталкивался с такой задачей, так что сходу ничего в голову не приходит. Сорян

Ed
20.06.2018
22:40:50
OpenJVM лучше чем переписывать)

Evgeny
20.06.2018
22:43:03
/stat@combot

Combot
20.06.2018
22:43:03
combot.org/c/-1001043090457

Vik
20.06.2018
22:51:27
@dmsol

Митко Соловец?
20.06.2018
22:52:04
Dmitrii
20.06.2018
22:55:09
кто-нибудь может объяснить, как работает CAS в multicore-среде? в частности, интересует простейший инкремент числа. если операция производится несколькими потоками, которые выполняются на одном цп, то из-за атомарности CAS-а состояние гонки не возникает, а меня интересует, что будет, когда два потока на разных цпу одновременно выполнят CAS. в итоге же обе операции заканчиваются записью значения в рам, как они друг друга не перезаписывают? или есть какие-то средства для корректного осуществления атомарных операций на разных цп? или вообще не стоит с этим заморачиваться?
Если речь идёт об интелах, то в тут два случая. Когда L1 и L2 не содержат кэшлайн того что ты пытаешься каснуть, тогда транзакция сериализуется на L3. Если содержит, то тут инструкция с префиксом lock (не только cmpxchg) требует кэшлайн в Exclusive стейте и другие ядра во время её исполнения не имеют права статус поменять (ЕМНИП).

Pavel ?
20.06.2018
22:57:21
@dmsol
что есть то есть)) ???

Pavel ?
20.06.2018
23:09:13
Кеш лайн, не кеш лайн) что нужно сделать с филдом в классе чтобы кеш лайн имел меньшую вероятность инвалидации?)

Google
Ed
20.06.2018
23:10:37
Начнем с мотивации) Зачем имел меньшую вероятность?

Pavel ?
20.06.2018
23:10:37
Ну или с классом))

Pavel ?
20.06.2018
23:11:26
sun.misc.Contended? ?
Там есть ещё один убогий вариант)))

Ed
20.06.2018
23:12:02
Речь про false sharing?

Dmitrii
20.06.2018
23:12:06
Там есть ещё один убогий вариант)))
Имеете ввиду ручной паддинг на 64 байта?)

Ed
20.06.2018
23:12:09
Ну тогда наследование

Dmitrii
20.06.2018
23:12:29
Ну тогда наследование
Можно по подробнее?

Pavel ?
20.06.2018
23:12:42
Ну тогда наследование
Я тоже не понял)

Ed
20.06.2018
23:13:07
Ну jvm не даёт гарантий про укладку в рамках одного класса

Но гарантирует, что родительские будут до

Dmitrii
20.06.2018
23:14:30
Но гарантирует, что родительские будут до
Интересно, незадумывался о таком способе. Это только для хотспота?

Pavel ?
20.06.2018
23:16:59
Ну jvm не даёт гарантий про укладку в рамках одного класса
Ну поэтому вероятность) я вообще не уверен что это может что-либо давать)

Ed
20.06.2018
23:18:19
http://psy-lob-saw.blogspot.com/2014/06/notes-on-false-sharing.html?m=1

+ от кого-то еще слышал (вроде, Шипилев)

Ed
20.06.2018
23:20:00
а работает ли на других JVM - хз, никогда другую JVM в руках и не держал (кроме IBM для WebSphere, в кровавых тырпырпрайзах)

Страница 2565 из 2890