Александр Емеленко
Компания: Spectral::Technologies
Все больше людей смотрят в сторону многопоточного программирования и часто видят решение всех проблем в добавлении многопоточности в свои изначально однопоточные проекты.
Я расскажу о трудностях в добавлении многопоточки в механизм обхода живых объектов в сборщике мусора виртуальной машины на примере проекта из Huawei.
Рассмотрим, какие неочевидные сложности могут возникнуть в процессе:
— scheduler операционной системы, который разложит потоки на одно ядро;
— особенности мобильных ОС, где включается энергосбережение и это тоже стоит брать во внимание;
— всевозможные проблемы с кешами (false sharing).
— реальная производительность lock free очередей на ARM;
— особенности ядер процессоров (как для мобильных устройств, где ядра несимметричные, так и для больших серверных процессоров, где доступ к кешам из одного ядра в другое зависит от их расположения на кристалле);
— сложности воспроизведения сценариев падений, особенно когда колличество целевых устройств больше одного, и они на разных архитектурах.
В конце упомяну, что мы делаем в Spectral::Technologies чтобы избежать таких проблем и какие сложности у нас встречаются.
Компания: Spectral::Technologies