kafka-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ismael Juma (JIRA)" <j...@apache.org>
Subject [jira] [Comment Edited] (KAFKA-3973) Investigate feasibility of caching bytes vs. records
Date Mon, 25 Jul 2016 08:01:20 GMT

    [ https://issues.apache.org/jira/browse/KAFKA-3973?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15391502#comment-15391502
] 

Ismael Juma edited comment on KAFKA-3973 at 7/25/16 8:01 AM:
-------------------------------------------------------------

Also, MemoryMeasurer has the following enum:

{code}
public static enum Guess {
        /* If instrumentation is not available, error when measuring */
        NEVER,
        /* If instrumentation is available, use it, otherwise guess the size using predefined
specifications */
        FALLBACK_SPEC,
        /* If instrumentation is available, use it, otherwise guess the size using sun.misc.Unsafe
*/
        FALLBACK_UNSAFE,
        /* If instrumentation is available, use it, otherwise guess the size using sun.misc.Unsafe;
if that is unavailable,
         * guess using predefined specifications.*/
        FALLBACK_BEST,
        /* Always guess the size of measured objects using predefined specifications*/
        ALWAYS_SPEC,
        /* Always guess the size of measured objects using sun.misc.Unsafe */
        ALWAYS_UNSAFE
    }
{code}

Which option did you test, the instrumentation one (that requires a Java agent to be configured)?


was (Author: ijuma):
Also, MemoryMeasurer has the following enum:

{code}
public static enum Guess {
        /* If instrumentation is not available, error when measuring */
        NEVER,
        /* If instrumentation is available, use it, otherwise guess the size using predefined
specifications */
        FALLBACK_SPEC,
        /* If instrumentation is available, use it, otherwise guess the size using sun.misc.Unsafe
*/
        FALLBACK_UNSAFE,
        /* If instrumentation is available, use it, otherwise guess the size using sun.misc.Unsafe;
if that is unavailable,
         * guess using predefined specifications.*/
        FALLBACK_BEST,
        /* Always guess the size of measured objects using predefined specifications*/
        ALWAYS_SPEC,
        /* Always guess the size of measured objects using sun.misc.Unsafe */
        ALWAYS_UNSAFE
    }
{code}

Which option did you test, the instrumentation one (that required a Java agent to be configured)?

> Investigate feasibility of caching bytes vs. records
> ----------------------------------------------------
>
>                 Key: KAFKA-3973
>                 URL: https://issues.apache.org/jira/browse/KAFKA-3973
>             Project: Kafka
>          Issue Type: Sub-task
>          Components: streams
>            Reporter: Eno Thereska
>            Assignee: Bill Bejeck
>             Fix For: 0.10.1.0
>
>         Attachments: CachingPerformanceBenchmarks.java, MemoryLRUCache.java
>
>
> Currently the cache stores and accounts for records, not bytes or objects. This investigation
would be around measuring any performance overheads that come from storing bytes or objects.
As an outcome we should know whether 1) we should store bytes or 2) we should store objects.

> If we store objects, the cache still needs to know their size (so that it can know if
the object fits in the allocated cache space, e.g., if the cache is 100MB and the object is
10MB, we'd have space for 10 such objects). The investigation needs to figure out how to find
out the size of the object efficiently in Java.
> If we store bytes, then we are serialising an object into bytes before caching it, i.e.,
we take a serialisation cost. The investigation needs measure how bad this cost can be especially
for the case when all objects fit in cache (and thus any extra serialisation cost would show).



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message