tag:blogger.com,1999:blog-410416665291724878.post39516619851399908..comments2022-12-19T13:52:22.907+04:00Comments on >рабочие заметки: ...и вновь продолжается бойRuslan Chereminhttp://www.blogger.com/profile/01023948540752159657noreply@blogger.comBlogger10125tag:blogger.com,1999:blog-410416665291724878.post-46528889044579788572017-09-11T21:57:15.304+04:002017-09-11T21:57:15.304+04:00Я могу спекулировать: обычно чем больше всякого-ра...Я могу спекулировать: обычно чем больше всякого-разного внесено в цикл, тем больше вероятности поломать компилятору какую-нибудь эвристику, и пролететь мимо соответствующей оптимизации. Thread.yield() в этом смысле очень подозрителен, потому что это системный вызов, и компилятор не может отследить, что там внутри него происходит -- а значит вынужден сдерживать свои прекрасные порывы, и быть болееRuslan Chereminhttps://www.blogger.com/profile/01023948540752159657noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-88711597730954619332017-09-11T12:24:43.447+04:002017-09-11T12:24:43.447+04:00Ссылка на доклад протухла, а в интернете так и не ...Ссылка на доклад протухла, а в интернете так и не нашел, поэтому и задал вопрос.<br /><br />Самое забавное, что именно в варианте, где есть Thread.yield() вечного цикла не наблюдал на x86 процессоре, несмотря на отсутствие ребер hb. Я не знаю, чем это объяснить. Это меня и смутило, думал на слайдах информации больше.<br /><br />На других архитектурах видимо проблема будет более нагляднее.Anonymoushttps://www.blogger.com/profile/10259336985081118830noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-5351497220569321042017-09-11T11:51:18.955+04:002017-09-11T11:51:18.955+04:000. Все примеры кода в рамках того исследования -- ...0. Все примеры кода в рамках того исследования -- это эксперименты. Вовсе не все они строго корректны -- я об этом, кажется, упоминал в докладе. Эти промежуточные варианты сфокусированы на том, чтобы посмотреть на конкретный эффект.<br /><br />1. Thread.yield() не может влиять на корректность кода, потому что у Thread.yield() нет никакой особой семантики в JMM. Он не SA, и не образует ни с кем Ruslan Chereminhttps://www.blogger.com/profile/01023948540752159657noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-15889071739764376482017-09-11T08:52:09.805+04:002017-09-11T08:52:09.805+04:00Руслан, конечно, хоть статье 5 лет, но у меня возн...Руслан, конечно, хоть статье 5 лет, но у меня возник вопрос на этом моменте "Причем без backoff() эта штука обходит ABQ вдвое".<br /><br />А корректно ли убирать backoff()? В вашем коде я просто убрал backoff() в dequeue и тест ниже завис(тестировал через jcstress).<br /><br /> @JCStressTest(Mode.Termination)<br /> @Outcome(id = "TERMINATED", expect = Expect.ACCEPTABLE, Anonymoushttps://www.blogger.com/profile/10259336985081118830noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-39094846684782103552012-04-05T23:05:45.237+04:002012-04-05T23:05:45.237+04:00Так, записываем: время на вопросы уменьшить до кра...Так, записываем: время на вопросы уменьшить до крайности :)Ruslan Chereminhttps://www.blogger.com/profile/01023948540752159657noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-51315192280318507362012-04-05T17:47:35.102+04:002012-04-05T17:47:35.102+04:00Круто, молодца! Надо будет тебе каверзный вопрос к...Круто, молодца! Надо будет тебе каверзный вопрос какой-нибудь подготовить :)Anonymoushttps://www.blogger.com/profile/06908778694732339503noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-88007084363709853472012-04-03T00:46:55.398+04:002012-04-03T00:46:55.398+04:00А, да. На JavaOne я буду докладываться, 18 числа. ...А, да. На JavaOne я буду докладываться, 18 числа. Расчленяя Disruptor называется доклад. Вроде, в 16 часовRuslan Chereminhttps://www.blogger.com/profile/01023948540752159657noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-57351286565653195422012-04-03T00:44:57.463+04:002012-04-03T00:44:57.463+04:00Руслан, а к какому докладу-то ты готовишься? Где т...Руслан, а к какому докладу-то ты готовишься? Где тебя можно будет послушать? Как доклад будет называться?Anonymoushttps://www.blogger.com/profile/06908778694732339503noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-77141605467560437342012-03-27T23:29:25.970+04:002012-03-27T23:29:25.970+04:00Не, ты говорил -- насколько я тебя понял -- как ра...Не, ты говорил -- насколько я тебя понял -- как раз про другое. Ты катил бочку на ReentrantLock, который там один (и потому contended), и который паркуется при первом же неудачном CAS-e. А это вовсе не важно -- я ж пишу, RL можно оставить, нехай он себе паркуется. Тормозят Condition-ы. Если оставить RL, но вместо ожидания на Condition сделать активное ожидание на условии -- пропускная способностьRuslan Chereminhttps://www.blogger.com/profile/01023948540752159657noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-15380167890437405932012-03-27T23:12:04.552+04:002012-03-27T23:12:04.552+04:00Не могу не поёрничать, что именно это я сразу про ...Не могу не поёрничать, что именно это я сразу про disruptor vs. ABQ и говорил: http://cheremin.blogspot.com/2011/09/disruptor-1.htmlAleksey Shipilev:https://www.blogger.com/profile/01270446535942765702noreply@blogger.com