#cassandra
#кассандра
Вопрос:
есть ли какая-либо документация о правильной конфигурации JNA?
Я не понимаю нескольких вещей:
1) Использует ли JNA настройки кучи JVM?
2) Нужно ли мне уменьшать максимальный размер кучи при использовании JNA?
3) Как мне ограничить оперативную память, выделяемую JNA?
4) Где я могу видеть / отслеживать размер кэша строк?
5) Я настроил JNA только для тестирования на своем компьютере разработчика, и до сих пор я заметил серьезные проблемы с производительностью (высокая загрузка процессора при большой нагрузке на запись), поэтому я, должно быть, делаю что-то не так…. Я только что скопировал JNA jars в Cassandra / lib без установки каких-либо собственных библиотек. Спасибо, Мацей
Ответ №1:
Похоже, вы говорите конкретно о кэшах строк на основе JNA.
1) Нет
2) Да, при прочих равных условиях
3) Путем соответствующей настройки размера кэша строк
4) JMX на ColumnFamilyStoreMBeans
5) кэш вне кучи использует меньше ЦП при записи, чем кэш в куче (он просто аннулирует обновленные строки, вместо того, чтобы обновлять их методом сквозной записи), поэтому я бы сказал, что что-то еще не так. Обязательно исключите замену из-за (2).
Комментарии:
1. Cassandra сериализует всю строку в ОЗУ, используя malloc из JNA — это нормально. Для кэша строк вне кучи мне нужно уменьшить кучу JVM, иначе сервер может начать замену. Мне также действительно нужно бодро рассчитать размер строки, нет способа ограничить оперативную память, выделяемую кешем вне кучи. Есть ли возможность узнать объем оперативной памяти, используемой кешем вне кучи?
2. размер кэша ~ = кэшированные строки * средний размер строки. на самом деле это лучшая ситуация, чем с кешем в куче, где у вас кэшируются строки * средний размер строки * накладные расходы JVM на строку, которые варьируются в зависимости от ваших данных.