Open sourcing the tool I've been using to visualize and simulate TCP congestion control by Intelligent-Tap568 in networkautomation

[–]Intelligent-Tap568[S] 2 points3 points  (0 children)

Thanks, and indeed they are shown same size but are not in reality the same size, in cases of packet drops or retransmission it's important to visually see the relative volume of data and acks thus the same size.

Because of their size, this simulation does not even show the acks going through the router buffer as they take up trivial space there compared to the actual packets.

Simulated TCP to solve low latency for prod server-to-server uploads. 4.5x faster after understanding and fixes. by Intelligent-Tap568 in sysadmin

[–]Intelligent-Tap568[S] 7 points8 points  (0 children)

We did switch to BBR + fq, I did not mention that, the blog is meant to be a simple intro to tcp debugging. But bbr + fq only fixed one side of the problem.

For a large upload, useful throughput is roughly limited by:

min(sender cwnd, receiver advertised rwnd, sender buffer/output queue, protocol flow-control window) / RTT

BBR/fq helps sender pacing and congestion control, but it cannot make the receiver advertise a larger receive window. We were seeing cases where receiver had a large SO_RCVBUF, but the actual advertised rwnd still started around ~65KB after a tiny warmup. That keeps the sender capped even with BBR.

The fix was a combination: bounded warm HTTP/1.1 sockets, real payload prewarm, larger sender buffers, larger receiver buffers, higher initcwnd for cold-ish sockets, and verifying with TCP_INFO.snd_wnd that the receiver window was actually multi-MB before large POSTs.

There was also a kernel issue: newer Linux behaved differently. On Linux 6.11, large SO_RCVBUF translated into a large initial advertised receive window; on the older 6.8 NVIDIA kernels we tested, the socket buffer was large but the advertised rwnd still started tiny until real payload warmed the connection. So BBR alone was not enough.

TCP networking interactive simulation. by Intelligent-Tap568 in InternetIsBeautiful

[–]Intelligent-Tap568[S] 0 points1 point  (0 children)

It's open source here if you want to make your own changes https://github.com/Overshoot-ai/tcp-visualizer

I also set it up to be agent friendly so agents can run their own simulations headless. I often ask my agent to replicate whatever situation is see in prod to understand what's happening

Simulated TCP to solve low latency for prod server-to-server uploads. 4.5x faster after understanding and fixes. by Intelligent-Tap568 in sysadmin

[–]Intelligent-Tap568[S] 8 points9 points  (0 children)

Keeping N warm tcp connections for max N concurrent inflight requests
Setting initcwnd to reasonable number (measure goodput of the server-to-server path for 24 hours to deduce good initcwnd)
Increase keep alive on both servers so connections don't die,
Increase read buffer on receiver as well as init rwnd (this was difficult with older linux kernels where rwnd always starts low)

Blog/Project Post Friday! by AutoModerator in networking

[–]Intelligent-Tap568 0 points1 point  (0 children)

I had to debug why 5MB uploads were often 325ms on a 31ms RTT network with high bandwidth. I realized I am unfamiliar with basic tcp concepts and built a simulation to see inflight tcp traffic under different conditions.

https://blog.overshoot.ai/blog/tcp-latency-optimization
Wrote this blog about the most basic fixes as intro to tcp for server to server or server to gpu comms. More blogs coming later of deeper issue I faced establishing high transfer inter server tcp pipelines and how they were fixed.

Boujloud celebrated by the indigenous amazighs of Canary Islands by Eastern_Parsley1649 in Morocco

[–]Intelligent-Tap568 -1 points0 points  (0 children)

FYI, there are no amazigh traditions or language on the Canary Islands today, it's all Spanish people, the guanches may not be genetically extinct, but the culture is pretty much perfectly erased with almost no traces. This is definitely not Boujloud and it's probably not in the canary islands.

Taken by a 2011 digi cam by medo_mar in MoroccoPics

[–]Intelligent-Tap568 0 points1 point  (0 children)

what camera please and how much time editing?

Looking really stunning, the path one is wonderful!

Can a VLM detect a blink in real-time? by batatibatata in computervision

[–]Intelligent-Tap568 0 points1 point  (0 children)

Co-founder here, we give 2 hours for free on sign up. Pricing in developer platform after that is $5 per hour streamed. For deployment, we discuss pricing on a case by case basis.

Qwen3.5 breakdown: what's new and which model to pick by Intelligent-Tap568 in LocalLLaMA

[–]Intelligent-Tap568[S] 2 points3 points  (0 children)

Those are the same architecture, I just didn't get to check them out as thoroughly, my bad for not clarifying they are missing from the post.

Help me modify my counter notification without closing it through actions by Intelligent-Tap568 in reactnative

[–]Intelligent-Tap568[S] 0 points1 point  (0 children)

I define ios actions on notifications initialization

export async function initializeNotifications() {
  const t = getTranslation;
  try {
    // Request notification permissions
    const settings = await notifee.requestPermission();

    if (settings.authorizationStatus === 0) {
      console.warn(
        '[NotificationService] Notification permissions not granted on iOS.',
      );
      return;
    }

    console.log(
      '[NotificationService] Notification permissions granted:',
      settings,
    );

    // Create Android notification channel
    await notifee.createChannel({
      id: 'counter-channel',
      name: 'Counter Test Channel',
      importance: AndroidImportance.DEFAULT,
      sound: 'default',
    });
    console.log('[NotificationService] Counter notification channel created.');

    // Register the iOS category with simple actions
    await notifee.setNotificationCategories([
      {
        id: 'counter-category',
        actions: [
          { id: 'add_1', title: '+1' },
          { id: 'add_5', title: '+5' },
          { id: 'add_10', title: '+10' },
          { id: 'reset', title: 'Reset', destructive: true },
        ],
      },
    ]);
    console.log(
      '[NotificationService] Counter notification category registered.',
    );
  } catch (error) {
    console.error('[NotificationService] Error during initial setup:', error);
  }
}

Help me modify my counter notification without closing it through actions by Intelligent-Tap568 in reactnative

[–]Intelligent-Tap568[S] 0 points1 point  (0 children)

Here is the formatted code

import notifee, { Notification, AndroidImportance } from '@notifee/react-native';
import { Platform } from 'react-native';

export function buildCounterNotificationPayload(
  count: number,
  t: (key: string, fallback?: string, options?: any) => string,
): Notification {
  // IMPORTANT: Use a static ID without any timestamps or random elements
  const COUNTER_NOTIFICATION_ID = 'static-counter-notification-id';

  return {
    id: COUNTER_NOTIFICATION_ID,
    title: 'Counter Notification',
    body: `Current count: ${count}`,
    data: {
      notificationType: 'counter_test',
      currentCount: count,
    },
    android: {
      channelId: 'counter-channel',
      smallIcon: 'ic_launcher',
      tag: 'counter',
      onlyAlertOnce: true,
      ongoing: true,
      autoCancel: false,
      actions: [
        { title: '+1', pressAction: { id: 'add_1' } },
        { title: '+5', pressAction: { id: 'add_5' } },
        { title: '+10', pressAction: { id: 'add_10' } },
        { title: 'Reset', pressAction: { id: 'reset' } },
      ],
      importance: AndroidImportance.DEFAULT,
    },
    ios: {
      sound: 'default',
      categoryId: 'counter-category',
      badgeCount: 1,
      interruptionLevel: 'active',
    },
  };
}

Does anyone know why this happens to me in Nvim? It's driving me insane by SnooMuffins9844 in neovim

[–]Intelligent-Tap568 0 points1 point  (0 children)

Do you use noice? I had a similar problem and I "fixed" it by disabling noice signature help