`cat(1)` writes current input immediately as soon as it gets to the end of data you gave it interactively so far.
Oh, you are a troll. cat cannot know how big the input is, it doesn't look for newlines, so unless it gets an EOF it will happily sit and wait for that 8K buffer to fill up.
If you think the OS is cooking the the input to read(1), you're insane. If that were true there would be no need to have read(1) and cat(1) be different programs as under your insane presumption they would behave identically for lines under 8K in length.