[카프카] 페이지 캐시(Page Cache)

    카프카(Kafka)에서는 페이지 캐시 기능을 써서 매우 높은 처리 속도를 가지고 있다.  페이지 캐시 기능은 OS에서 사용하는 페이지 캐시와 동일한 것이며, 메모리(RAM) 영역에 어플리케이션이 사용하는 부분을 할당하고 남은 잔여 메모리를 캐시로 전환하여 디스크 접근을 최소화해 I/O 성능을 향상시키는 메모리 영역이다.

     

    페이지캐시의 개념

     

    카프카는 페이지 캐시를 적극적으로 사용하고 있기 때문에 서버에 디스크를 SSD로 구성하지 않아도 되며, 페이지 캐시를 사용하기 위해서 잔여 메모리를 쓰기 때문에 카프카 서버에 다른 어플리케이션을 함께 실행하는 것을 권장하지 않는다.

     

    JVM 힙사이즈

    카프카는 JVM에서 돌아가기 때문에 메모리 할당 영역을 자바처럼 설정할 수 있다. 메모리 설정 방법은 KAFKA_HEAP_OPTS=-Xmx, Xms에서 메모리 값을 변경하면 되고 컨플루언트에 따르면 초당 메시지 단위, 메가비트 단위를 처리함에 있어 5GB의 힙 메모리면 충분하다고 하며 나머지는 페이지 캐시를 사용하기를 권장한다. 

     

    아래는 confluent의 원문이다

    MemoryKafka relies heavily on the filesystem for storing and caching messages. All data is immediately written to a persistent log on the filesystem without necessarily flushing to disk. In effect this just means that it is transferred into the kernel’s pagecache. A modern OS will happily divert all free memory to disk caching with little performance penalty when the memory is reclaimed. Furthermore, Kafka uses heap space very carefully and does not require setting heap sizes more than 6 GB. This will result in a file system cache of up to 28-30 GB on a 32 GB machine.You need sufficient memory to buffer active readers and writers. You can do a back-of-the-envelope estimate of memory needs by assuming you want to be able to buffer for 30 seconds and compute your memory need as write_throughput * 30.A machine with 64 GB of RAM is a decent choice, but 32 GB machines are not uncommon. Less than 32 GB tends to be counterproductive (you end up needing many, many small machines).

    https://docs.confluent.io/current/kafka/deployment.html

     

     

    참고자료

    https://en.wikipedia.org/wiki/Page_cache

    댓글

    Designed by JB FACTORY