{"action":"created","issue":{"url":"https://api.github.com/repos/grpc/grpc-java/issues/502","labels_url":"https://api.github.com/repos/grpc/grpc-java/issues/502/labels{/name}","comments_url":"https://api.github.com/repos/grpc/grpc-java/issues/502/comments","events_url":"https://api.github.com/repos/grpc/grpc-java/issues/502/events","html_url":"https://github.com/grpc/grpc-java/issues/502","id":82641130,"number":502,"title":"Allow for batching writes to the framer","user":{"login":"louiscryan","id":9046588,"avatar_url":"https://avatars.githubusercontent.com/u/9046588?v=3","gravatar_id":"","url":"https://api.github.com/users/louiscryan","html_url":"https://github.com/louiscryan","followers_url":"https://api.github.com/users/louiscryan/followers","following_url":"https://api.github.com/users/louiscryan/following{/other_user}","gists_url":"https://api.github.com/users/louiscryan/gists{/gist_id}","starred_url":"https://api.github.com/users/louiscryan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/louiscryan/subscriptions","organizations_url":"https://api.github.com/users/louiscryan/orgs","repos_url":"https://api.github.com/users/louiscryan/repos","events_url":"https://api.github.com/users/louiscryan/events{/privacy}","received_events_url":"https://api.github.com/users/louiscryan/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/grpc/grpc-java/labels/performance","name":"performance","color":"5319e7"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":9,"created_at":"2015-05-30T00:23:03Z","updated_at":"2015-06-01T23:08:40Z","closed_at":null,"body":"Need to allow applications to perform a sequence of writes that cause a single flush in the framer to improve throughput.\r\n\r\nThe typical example for this would be an application thats wants to write messages until isReady() is false and to do more writes when onReady() is called. Even if the application is not flow-control aware (i.e is not using isReady) it would still be useful to allow write batching for bursty streams\r\n\r\nOne simple option for doing this would be to delay the outbound framer flush while executing  onPayload/isReady callbacks though this would only help cases where sends are done inside these callbacks by the same thread. A more thorough API change is probably warranted.\r\n\r\nTo give some performance context the change described above allows the FlowControlledMessagesPerSecondBenchmark to go from ~700kqps to ~4Mqps on my box\r\n\r\n"},"comment":{"url":"https://api.github.com/repos/grpc/grpc-java/issues/comments/107742779","html_url":"https://github.com/grpc/grpc-java/issues/502#issuecomment-107742779","issue_url":"https://api.github.com/repos/grpc/grpc-java/issues/502","id":107742779,"user":{"login":"ejona86","id":2811396,"avatar_url":"https://avatars.githubusercontent.com/u/2811396?v=3","gravatar_id":"","url":"https://api.github.com/users/ejona86","html_url":"https://github.com/ejona86","followers_url":"https://api.github.com/users/ejona86/followers","following_url":"https://api.github.com/users/ejona86/following{/other_user}","gists_url":"https://api.github.com/users/ejona86/gists{/gist_id}","starred_url":"https://api.github.com/users/ejona86/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ejona86/subscriptions","organizations_url":"https://api.github.com/users/ejona86/orgs","repos_url":"https://api.github.com/users/ejona86/repos","events_url":"https://api.github.com/users/ejona86/events{/privacy}","received_events_url":"https://api.github.com/users/ejona86/received_events","type":"User","site_admin":false},"created_at":"2015-06-01T23:08:40Z","updated_at":"2015-06-01T23:08:40Z","body":"Ah @louiscryan, that makes sense, that it is only for the framer's benefit. Gotcha."}}