HackerTrans
TopNewTrendsCommentsPastAskShowJobs

Flowdalic

no profile record

comments

Flowdalic
·12 bulan yang lalu·discuss
> The standardization process comes into play when you think you have found a good solution, which should be adopted by THE standard respectively the ecosystem.

Na, the standardization process starts much earlier. Using the example of the IETF process, after which XMPP standardization process is largely modeled: standardization starts when you submit an I-D to IETF and/or approach an IETF WG.

> What matters is what the standard itself looks like, do you have a coherent specification which specifies the current way of doing things, including optional components? Or do you have a set of independent ways of doing it, because the standardization process doesn't actually decide what is the correct way of doing something (e.g. managing a group chat)

Well put and I totally agree (I think no one would have a reason to disagree with that statement).
Flowdalic
·12 bulan yang lalu·discuss
I am not sure if I would phrase it that way.

(Seemingly) conflicting extensions are another consequence of the loosely coupling between standardization and implementations. In addition, the emergence of several functionally overlapping extensions is stimulated by the freely accessible standardization process.

Especially in the early phase of an extension, you want to encourage experimentation with different approaches. Early selection would be disadvantageous.
Flowdalic
·12 bulan yang lalu·discuss
> Personal speculation but I blame the "everything is an extension" model - it was meant to reduce fragmentation and allow clients with different featuresets to interoperate

I could be wrong, but that reads like you suggest that there is an alternative to the "extension model".

However, any solution where standardization and implementations are independent entities, and thereby experience a sufficient degree of freedom, will have a trajectory to a situation where you have a robust core specification and optional extensions.

Think about protocols like SMTP and DNS—each has a foundational core that’s been expanded upon by numerous optional features.
Flowdalic
·3 tahun yang lalu·discuss
The kernel usually just needs to know which binary to execute as init, which is often provided as kernel command line argument by the bootloader.
Flowdalic
·4 tahun yang lalu·discuss
> Even if the application is making 50 byte sends why aren't these getting coalesced once the socket's buffer is full?

Because maybe the 50 bytes are latency sensitive and need to be at the recipient as soon as possible?

> I understand that Nagle's algorithm will send the first couple packets "eagerly" […] Disabling Nagle's algorithm should be trading network usage for latency

No, Nagle's algorithm will delay outgoing TCP packets in the hope that more data will be provided to the TCP connection, that can be shoved into the delayed packet.

The issue here is not Go's default setting of TCP_NODELAY. There is an use case for TCP_NODELAY. Just like there is a use case for disabling TCP_NODELAY, i.e., Nagle's algorithm (see RFC 869). So any discussion about the default behavior appears to be pointless.

Instead, I believe the application or a underlying library is to blame. Because I don’t see why applications performing a bulk transfer of data by using “small” (a few bytes) write is anything but a bad design. Not writing large (e.g., page-sized) chunks of data into the file descriptor of the socket, especially when you know that there multiple more of this chunks are to come, just kills performance on multiple levels.

If I understand the situation the blog post describes correctly, then git-lfs is sending a large (50 MiB?) file in 50 bytes chunks. I suspect this is because git-lfs (or something between git-lfs and the Linux socket, e.g., a library) issues writes to the socket with 50 bytes of data from the file.
Flowdalic
·4 tahun yang lalu·discuss
The problem does not seem to be that TCP_NODELAY is on, but that the packets are sent carry only 50 bytes of payload. If you send a large file, then I would expect that you invoke send() with page-sized buffers. This should give the TCP stack enough opportunity to fill the packets with an reasonable amount of payload, even in the absence of Nagel's algorithm. Or am I missing something?
Flowdalic
·4 tahun yang lalu·discuss
It should be possible to install meson via pip --user. Even though I prefer system-wide installations, I believe this weakens your argument for user defined functions in your situation.