Jiangjie Qin created KAFKA-3300: ----------------------------------- Summary: Calculate the initial size allocation of offset index files and reduce the memory footprint for memory mapped files. Key: KAFKA-3300 URL: https://issues.apache.org/jira/browse/KAFKA-3300 Project: Kafka Issue Type: Improvement Reporter: Jiangjie Qin Assignee: Jiangjie Qin
Currently the initial/max size of offset index file is configured by {{log.index.max.bytes}}. This will be the offset index file size for active log segment until it rolls out. Theoretically, we can calculate the upper bound of offset index size using the following formula: {noformat} log.segment.bytes / index.interval.bytes * 8 {noformat} With default setting the bytes needed for an offset index size is 1GB / 4K * 8 = 2MB. And the default log.index.max.bytes is 10MB. This means we are over-allocating at least 8MB on disk and mapping it to memory. We can probably do the following: 1. When creating a new offset index, calculate the size using the above formula, 2. If the result in (1) is greater than log.index.max.bytes, we allocate log.index.max.bytes instead. This should be able to significantly save memory if a broker has a lot of partitions on it. -- This message was sent by Atlassian JIRA (v6.3.4#6332)