Would the already present benchmarks in the code be sufficient?

If so, here are the remote read 
<https://github.com/mircodz/go-proto-bench/blob/main/benchmarks/rr_baseline_csproto>
, remote write 
<https://github.com/mircodz/go-proto-bench/blob/main/benchmarks/rw_baseline_csproto>,
 
and a cheeky remote read with pooling for snappy decompression 
<https://github.com/mircodz/go-proto-bench/blob/main/benchmarks/rw_baseline_csproto_pooling>
 comparisons 
(ran with -tags stringlabels), along side the raw results in the same 
directory.
The remote read tests don't look great, but I might have missed something 
inside of the code.

Note: I took the liberty to use 10 labels for both tests 
<https://github.com/prometheus/prometheus/commit/7080c6ac8cc4175d79a1fd047cb17f0976f57130>
.

On Wednesday, February 14, 2024 at 10:18:30 AM UTC+1 Bryan Boreham wrote:

> No need to apologise!
>
> Do you have benchmarks using the Prometheus remote-read and remote-write 
> protobufs ?
>
> On Wednesday 14 February 2024 at 08:08:37 UTC [email protected] wrote:
>
>> Hi all, sorry to disrupt this discussion.
>>
>> Before stumbling upon this thread, I had worked on a separate fork 
>> <https://github.com/prometheus/prometheus/compare/main...mircodz:prometheus:deprecate-gogo>
>>  
>> to deprecate gogo in favor of csproto, as compiling it using 
>> enableunsafedecode=true seems <https://github.com/mircodz/go-proto-bench> to 
>> give performance even better than vtproto. (Note, I have only compared 
>> the performance of csproto and vtproto to the official proto generator, 
>> and not gogo).
>> As of now the branch compiles and passes all tests, but I haven't gone 
>> through the code to check for possible optimizations that could arise from 
>> migrating away from gogo.
>> Would you be interested in a pull request? As mentioned above, this would 
>> be also a good opportunity to cleanup the proto generation code using buf
>> .
>>
>> P.S.: This would depend on a change in prometheus/client_model, but 
>> would allow removing the duplicate proto definition in the repository.
>>
>> King Regards,
>> Mirco De Zorzi.
>> On Monday, February 5, 2024 at 10:58:17 AM UTC+1 Bartłomiej Płotka wrote:
>>
>>> Issue for reference: 
>>> https://github.com/prometheus/prometheus/issues/11908
>>>
>>> Kind Regards,
>>> Bartek Płotka
>>>
>>> On Saturday, February 3, 2024 at 12:56:09 PM UTC Bartłomiej Płotka wrote:
>>>
>>>> We did a bit of testing for remote write 2.0 work (e.g. here 
>>>> <https://github.com/bwplotka/go-proto-bench>) for gogo vs different 
>>>> plugins, and vtproto is the most promising even with more pointers.
>>>>
>>>> We have to get rid of nullables, yes (more pointers, pore separate 
>>>> objects on heap, generally more allocs), but even for our current remote 
>>>> write (especially with interning) there is literally not many slices (with 
>>>> many elements) that use custom types. And even if there are (e.g. 
>>>> []*TimeSeries) those objects might be worth to keep separate on the heap. 
>>>> This is also what protobuf direction will be, given the vision of "opaque 
>>>> API" (ability to load/allocate/ parts of proto message in a lazy way).
>>>>
>>>> Furthermore we hit a roadblock a bit, as a apparently "optional 
>>>> <https://github.com/gogo/protobuf/issues/713>" proto3 option does not 
>>>> work with proto. This makes it maybe even more worth doing. (e.g. PRW 2.0 
>>>> optional timestamp int64 would not be able to have valid value of 0 etc).
>>>>
>>>> I think I would consider doing this work this summer, perhaps as a GSoC 
>>>> mentorship 
>>>> <https://github.com/cncf/mentoring/blob/main/programs/summerofcode/2024.md>.
>>>>  
>>>> Anyone would like to mentor/co-mentor that with me or Callum? (: 
>>>>
>>>> Kind Regards,
>>>> Bartek Plotka
>>>>
>>>> On Wednesday, November 29, 2023 at 2:38:14 AM UTC [email protected] 
>>>> wrote:
>>>>
>>>>> As part of all the remote write proto changes I've been working on I 
>>>>> tried out moving us off of gogoproto, cherry picking Austin's original 
>>>>> changes into a new branch off of the current main branch.
>>>>>
>>>>> As Tom mentioned, the main reason for using gogoproto is that 
>>>>> `repeated SomeMessageType = n;` fields within messages are generated as 
>>>>> slices of concrete types rather than slices of pointers, which makes it 
>>>>> much easier to write code that avoids extra memory allocations. From what 
>>>>> I've hacked together, we can get similar (or potentially better) 
>>>>> performance using vtproto and their pooling feature, but it's going to be 
>>>>> a 
>>>>> big refactoring effort. 
>>>>>
>>>>> It might, however, be worth it. It looks to me like even with slightly 
>>>>> more allocations the proto marshalling is faster and the marshalled 
>>>>> message 
>>>>> is smaller. I'll push what I have later this week when I'm more confident 
>>>>> it's working correctly.
>>>>>
>>>>> On Thursday, July 8, 2021 at 2:42:41 AM UTC-7 Frederic Branczyk wrote:
>>>>>
>>>>>> I think I'd be most useful to rebase, and create a PR from this, then 
>>>>>> we can see whether tests pass and we can run prombench (although I don't 
>>>>>> think there are any perf tests that involve the proto parts). Then we 
>>>>>> can 
>>>>>> discuss on there and figure out where to take this.
>>>>>>
>>>>>> Thank you so much for the work you have already put into this!
>>>>>>
>>>>>> On Mon, 21 Jun 2021 at 19:53, Austin Cawley-Edwards <
>>>>>> [email protected]> wrote:
>>>>>>
>>>>>>> I've updated my branch (
>>>>>>> https://github.com/austince/prometheus/tree/feat/drop-gogo) to use 
>>>>>>> both the vitess plugin and the buf tool, which indeed fit very nicely 
>>>>>>> together.
>>>>>>>
>>>>>>> I've only updated the code enough for it to compile, have not 
>>>>>>> investigated the semantic differences. This is likely the furthest I'll 
>>>>>>> be 
>>>>>>> able to take this for a bit, so feedback and playing around are welcome 
>>>>>>> and 
>>>>>>> appreciated if this is where we'd like protobuf in Prometheus to go :) 
>>>>>>>
>>>>>>> Best,
>>>>>>> Austin
>>>>>>>
>>>>>>> On Thu, Jun 17, 2021 at 12:56 PM Frederic Branczyk <
>>>>>>> [email protected]> wrote:
>>>>>>>
>>>>>>>> I have heard great thing, but haven’t used it. Wrongfully thought 
>>>>>>>> that they are mutually exclusive but turns out they are actually 
>>>>>>>> complementary: 
>>>>>>>> https://twitter.com/fredbrancz/status/1405192828049838080?s=21
>>>>>>>>
>>>>>>>> We should probably do an investigation of the combination.
>>>>>>>>
>>>>>>>> On Thu 17. Jun 2021 at 18:26, Austin Cawley-Edwards <
>>>>>>>> [email protected]> wrote:
>>>>>>>>
>>>>>>>>> Just saw this on the CNCF blog as well, seems like a promising 
>>>>>>>>> library.
>>>>>>>>>
>>>>>>>>> Tangentially, have you heard of https://github.com/bufbuild/buf? 
>>>>>>>>> It seems much nicer than compiling with shell scripts and protoc.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>

-- 
You received this message because you are subscribed to the Google Groups 
"Prometheus Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/prometheus-developers/b7225aef-3a24-4722-a52a-67a7a45cd557n%40googlegroups.com.

Reply via email to