Бергер и его коллеги из Колледжа информации и компьютерных наук (CICS) ожидают, что Mesh окажет существенное влияние на мир вычислений, от мобильных приложений до настольных компьютеров и центров обработки данных, потому что ранее никому не удавалось сжимать память в приложениях, написанных на или работает поверх широко используемых языков, таких как C, C ++ или Objective C, языка, используемого для приложений iOS.
Как объясняют авторы, программы, написанные на C-подобных языках, могут страдать от серьезной фрагментации памяти, когда память разбивается, как на плохой доске тетриса, говорит Бергер, поэтому между ними много пустых промежутков. «Вот как тратится память», – отмечает он. "Представьте себе доску Тетриса, где вы можете в любой момент остановить и реорганизовать ее – это сделало бы игру намного проще, потому что вы всегда могли выжать пустое место. Но вы не можете сделать это в C, так же как вы не можете сделать это в тетрисе."
Mesh эффективно устраняет эти пробелы, используя аппаратную функцию, называемую «виртуальная память», которая поддерживается почти всеми современными компьютерами. «Уловка состоит в том, чтобы найти фрагменты памяти, которые можно перемежать, как если бы сцеплялись шестерни», – объясняет Бергер. Когда Mesh находит эти фрагменты, он может освободить память из одного из фрагментов, объединив два фрагмента в один. "Этот процесс объединения работает, потому что мы изменяем вещи только в" физической "памяти. С точки зрения программы, которая может видеть только «виртуальную» память, ничего не изменилось. Это мощный инструмент, потому что мы можем сделать это для любого приложения автоматически."
Команда сообщает, что на сегодняшний день результаты были чрезвычайно многообещающими; например, использование Mesh автоматически снижает требования к памяти веб-браузера Firefox на 16%. Для Redis, популярного сервера структуры данных с открытым исходным кодом, Mesh снижает требования к памяти почти на 40%.
Команда CICS Mesh включает профессора Эмери Бергера, эксперта по управлению памятью, который разработал алгоритм, на котором основан менеджер памяти Mac OS X, профессора Эндрю МакГрегора, специалиста по разработке и анализу алгоритмов, и докторантов Бобби Пауэрса и Дэвида Тенча. Пауэрс – докторант четвертого курса, который также является инженером инфраструктуры в Stripe, а Тенч – докторант пятого курса, специализирующийся на рандомизированных алгоритмах.
Авторы отмечают, что в области, где «катастрофическая фрагментация» долгое время считалась неизбежной, их программное обеспечение является важным шагом вперед. «Это то, что все считали невозможным», – отмечает МакГрегор. "После того, как Эмери получил свое ключевое понимание, мы смогли проанализировать его теоретически и разработать эффективный алгоритм для реализации идеи. Вопреки почти 50-летнему общепринятому мнению, здорово, что теперь у нас есть решение этой важной проблемы, которое работает не только в теории, но и на практике."
Ранее в этом году Бергер представил технические подробности на конференции ACM SIGPLAN Programming Language Design and Implementation (PLDI ’19) в Фениксе. В ответ на статью программист Микрософт и выдающийся инженер Мигель де Икаса написал в Твиттере, что Mesh – это «действительно вдохновляющая работа с глубоким влиянием.
Прекрасная идея полностью реализована. Какой потрясающий вклад в индустрию."
