Uploaded image for project: 'Ratis'
  1. Ratis
  2. RATIS-1931

Support Zero-Copy in ratis-grpc

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Open
    • Major
    • Resolution: Unresolved
    • None
    • None
    • gRPC
    • None

    Description

      As GRPC has stabilized the API for zero-copy for protobuf (https://github.com/grpc/grpc-java/issues/7387), it's possible to have such memory efficiency feature in Ratis GRPC.

      Attachments

        1. datanode-on-write-zerocopy.html
          409 kB
          Duong
        2. datanode-on-write-ncopies.html
          424 kB
          Duong

        Issue Links

          1.
          Create zero-copy Marshaller Sub-task Resolved Duong

          100%

          Original Estimate - Not Specified Original Estimate - Not Specified
          Time Spent - 50m
          2.
          Add TestGrpcZeroCopy Sub-task Resolved Tsz-wo Sze

          100%

          Original Estimate - Not Specified Original Estimate - Not Specified
          Time Spent - 1h 10m
          3.
          Restore ZeroCopyMessageMarhaller#popStream Sub-task Resolved Attila Doroszlai

          100%

          Original Estimate - Not Specified Original Estimate - Not Specified
          Time Spent - 0.5h
          4.
          Avoid Ratis internal data from referring to external input protobuf data source Sub-task Resolved Duong

          100%

          Original Estimate - Not Specified Original Estimate - Not Specified
          Time Spent - 1.5h
          5.
          Do not store CommitInfoProto in CommitInfoCache Sub-task Resolved Tsz-wo Sze

          100%

          Original Estimate - Not Specified Original Estimate - Not Specified
          Time Spent - 1h 40m
          6.
          Refactor client request processing to support reference count Sub-task Resolved Tsz-wo Sze

          100%

          Original Estimate - Not Specified Original Estimate - Not Specified
          Time Spent - 1h
          7.
          Support Zero-Copy in GrpcClientProtocolService Sub-task Resolved Duong

          100%

          Original Estimate - Not Specified Original Estimate - Not Specified
          Time Spent - 4h 40m
          8.
          Refactor appendEntries processing to support reference count Sub-task Resolved Duong

          100%

          Original Estimate - Not Specified Original Estimate - Not Specified
          Time Spent - 2h 10m
          9.
          Support Zero-Copy in GrpcServerProtocolService Sub-task Resolved Duong

          100%

          Original Estimate - Not Specified Original Estimate - Not Specified
          Time Spent - 1h 10m
          10.
          ReferenceCount should work for all LogEntry types. Sub-task Resolved Duong

          100%

          Original Estimate - Not Specified Original Estimate - Not Specified
          Time Spent - 1h 20m
          11.
          Zero-copy buffers are not released Sub-task Resolved Duong

          100%

          Original Estimate - Not Specified Original Estimate - Not Specified
          Time Spent - 50m
          12.
          Zero-copy buffers are not released - 2nd chunk Sub-task Resolved Duong

          100%

          Original Estimate - Not Specified Original Estimate - Not Specified
          Time Spent - 1h 10m
          13.
          Add metrics assertions to verify all zero-copy messages are released properly Sub-task Resolved Duong

          100%

          Original Estimate - Not Specified Original Estimate - Not Specified
          Time Spent - 1.5h
          14.
          Refactor StateMachine interface to use ReferenceCountedObject Sub-task Resolved Duong

          100%

          Original Estimate - Not Specified Original Estimate - Not Specified
          Time Spent - 0.5h
          15.
          Refactor TransactionContext to supply LogEntryProto via a ReferenceCountedObject Sub-task Resolved Duong

          100%

          Original Estimate - Not Specified Original Estimate - Not Specified
          Time Spent - 1.5h
          16.
          Refactor RaftLog to supply log as ReferenceCountedObject Sub-task Resolved Duong

          100%

          Original Estimate - Not Specified Original Estimate - Not Specified
          Time Spent - 2h
          17.
          LogAppender to consume log entries with reference count Sub-task Resolved Duong

          100%

          Original Estimate - Not Specified Original Estimate - Not Specified
          Time Spent - 2h 10m
          18.
          Allow StateMachine.read to return a ReferentCountedObject Sub-task Resolved Duong

          100%

          Original Estimate - Not Specified Original Estimate - Not Specified
          Time Spent - 1h 20m
          19.
          Missing reference count when putting log entries to cache on follower Sub-task Resolved Duong

          100%

          Original Estimate - Not Specified Original Estimate - Not Specified
          Time Spent - 0.5h
          20.
          Timedout StateMachine retainRead is released twice. Sub-task Resolved Duong

          100%

          Original Estimate - Not Specified Original Estimate - Not Specified
          Time Spent - 2h 10m
          21.
          Support Zero-Copy in loading log entries from local files Sub-task Open Unassigned  
          22.
          Benchmark zero-copy in ozone Sub-task Open Unassigned  
          23.
          Test failure because SimpleStateMachine4Testing is not closed properly Sub-task Open Nandakumar  
          24.
          Add metrics to expose number of zero-copy unclosed messages Sub-task Resolved Duong

          100%

          Original Estimate - Not Specified Original Estimate - Not Specified
          Time Spent - 20m
          25.
          Decouple metadata and configuration entries from appendEntries buffer for stateMachineCache Sub-task Resolved Duong

          100%

          Original Estimate - Not Specified Original Estimate - Not Specified
          Time Spent - 1h
          26.
          TransactionContext's stateMachineLogEntry and stateMachineContext may cause corruption Sub-task Resolved Duong

          100%

          Original Estimate - Not Specified Original Estimate - Not Specified
          Time Spent - 50m
          27.
          Add a conf to enable/disable zero copy. Sub-task Resolved Duong

          100%

          Original Estimate - Not Specified Original Estimate - Not Specified
          Time Spent - 40m
          28.
          Corruption due to SegmentedRaftLogWorker queue LogEntry without reference counter Sub-task Resolved Duong  

          Activity

            People

              duongnguyen Duong
              duongnguyen Duong
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

                Created:
                Updated:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 32.5h
                  32.5h