Announcement

Collapse
No announcement yet.

Systemd Looking At A Future With More Varlink & Less D-Bus For IPC

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • #11
    Originally posted by tsuru View Post
    What is the governance model of the Varlink project? Who owns it -- Redhat? Microsoft? an Individual? I can't find these details easily on varlink.org or the various github projects...
    Looks like the contributors are Red Hat and former Red Hat folks.

    Comment


    • #12
      Originally posted by oleid View Post
      Why would one use json for a message bus payload and not something binary like - I don't know - messagepack? Serialising and deserialising json is not really efficient.
      The following benchmark is using a very efficient json library. Note that the X axis is logarithmic:

      https://github.com/getml/reflect-cpp...ain/benchmarks
      I agree with you 100% but the decision-making process is rarely based on technical merit - instead, it is political/ideological.

      Comment


      • #13
        Originally posted by oleid View Post
        Why would one use json for a message bus payload and not something binary like - I don't know - messagepack? Serialising and deserialising json is not really efficient.
        I'm pretty sure the kinds of messages they'll be using are so tiny that the actual parsing overhead shouldn't be much worse than a context switch, if even that much. For sending bulk data, something like pipewire would be much more suitable.

        Also, thanks for sharing the link. Too bad it didn't include protobuf, as I'd have liked to see how it compares to the others.

        Comment


        • #14
          Originally posted by discordian View Post
          similarly you could exchange fds for shared memory.
          If you're exchanging fds, you want the messaging infrastructure to have native support for that. DBus supports it via payload type "h".

          Comment


          • #15
            Originally posted by oleid View Post
            Why would one use json for a message bus payload and not something binary like - I don't know - messagepack? Serialising and deserialising json is not really efficient.
            The following benchmark is using a very efficient json library. Note that the X axis is logarithmic:

            https://github.com/getml/reflect-cpp...ain/benchmarks
            covered in the video. The round trip overhead in the D-BUS broker is much larger than the marshalling overhead of JSON for the smaller messages that we are talking about here and it also enables for extremely easy debugging via strace where you can actually see wtf the services are saying instead of having to also decode binary data.

            And it also allows to use varlink from simple and small applications by just write/read simply json to/from stdout/stdin.

            Comment


            • #16
              Originally posted by oleid View Post
              Why would one use json for a message bus payload and not something binary like - I don't know - messagepack? Serialising and deserialising json is not really efficient.
              The following benchmark is using a very efficient json library. Note that the X axis is logarithmic:

              https://github.com/getml/reflect-cpp...ain/benchmarks
              json is the perfect fit, especially for systems administrators who will be able do to a lot with just jq now. moving to msgpack wouldn't get you much, and it's not all that perfect, or actually maintained last I checked, it just got some marketshare by being early. cbor is better. anyway if you're doing binary encoding, you want to look more at something like capnproto/protobufs/thrift/apache arrow, or more likely something like androids binder, so you can send real objects which was kinda the point of dbus being so complicated, but it kinda was a total mess, and shouldn't have been anywhere near systemd to begin with. I was looking into getting networkd or systemd events information out of dbus and it's a frustratiing mess, both because systemd documentation is terrible, but also because of dbus itself. hopefully they implement varlink much better, but i won't hold my breath.

              Comment


              • #17
                Originally posted by oleid View Post
                Why would one use json for a message bus payload and not something binary like - I don't know - messagepack? Serialising and deserialising json is not really efficient.
                It also has an extremely limited type system: no integers (only floats), no precision, and maps can only have strings as keys. The Varlink FAQ's answer about integer precision is ... it's your problem. There are ways around these challenges, but programmer's need to pay attention to the data they want to send.

                Honestly, though, for the kind of in-system IPC we are talking about here, the greater efficiency of binary formats would likely be unnoticeable.

                Comment


                • #18
                  Originally posted by tsuru View Post
                  What is the governance model of the Varlink project? Who owns it -- Redhat? Microsoft? an Individual? I can't find these details easily on varlink.org or the various github projects...
                  If systemd is considering using it, it's owned by Red Hat. RH always prefers it's own software to other alternatives, 100% of the time. And since the Linux world always chooses to use RH-owned software on the macro level, soon RH will control most of the Linux stack on top of the kernel
                  Last edited by Daktyl198; 28 September 2024, 10:37 PM.

                  Comment


                  • #19
                    leave it to systemd to get away from well polished solutions like dbus and infest my system with this bloated nonsense...

                    Comment


                    • #20
                      Originally posted by Daktyl198 View Post

                      If systemd is considering using it, it's owned by Red Hat. RH always prefers it's own software to other alternatives, 100% of the time. And since the Linux world always chooses to use RH-owned software on the macro level, soon RH will control most of the Linux stack on top of the kernel
                      I guess you missed the news that LP doesn't work for Red Hat anymore....

                      Comment

                      Working...
                      X