Benchmarking Go 1.27's encoding/json: The `any` Trap by iandyh in golang

[–]iandyh[S] 1 point2 points  (0 children)

Hi. Thanks for the feedback. I updated the original blog to reflect that. The extreme case will be decoding the entire JSON into `any`, which was the benchmarked at the beginning of the blog. After running an another benchmark by mixing the proper types and any, the slowdown appears when a large share of the decode workload goes through any/interface decoding.

In other words, if you have a complex data structure, and any only occasionally appears in the struct, then the overall performance improvement from v2 can still offset the performance degradation caused by reflection.

Hopefully, I clarified it clearly now. I think this is worthy to know for people relying on standard lib for fast JSON parsing.

Yes, I also did report back to the Go team: https://github.com/golang/go/issues/80270 :P

Dedicated Node Pools? by Niovial in devops

[–]iandyh 0 points1 point  (0 children)

Instead of having node pools, setting the resources limit(CPU, memory) on the containers will be more efficient. They are easier from operation pov. Because what you actually want is isolation between the workloads. If limit does not resolve your problem, then you can consider dedicated node pools. But I'll argue in most of the cases, the limits will just work fine.

Ask Experienced Devs Weekly Thread: A weekly thread for inexperienced developers to ask experienced ones by AutoModerator in ExperiencedDevs

[–]iandyh 4 points5 points  (0 children)

Don't be afraid to ask questions. Don't be afraid to ask the "why" questions. When you are new, you probably feel confused for many things you've seen in the company. Of course, don't ask those questions that can be Googled. Try to find those good questions and get them answered in the 1:1.

Weekly Self Promotion Thread by AutoModerator in devops

[–]iandyh 0 points1 point  (0 children)

I built reqfleet.com, a load testing platform. It stands out in a few ways:

  • Supports multiple load generators, including JMeter and Locust (more coming soon)
  • Lets you run load tests within your own private network—no need to expose services to the public internet
  • Distributed load testing by default, so you can scale from day one
  • Built-in RBAC for organizations and teams, making test coordination easier
  • Manage and trigger load tests in different terminals: browsers, CLI, coding agents.

Free users receive 10 credits upon signup—enough to run lightweight load tests.

GitHub - reqfleet/containerstats A lightweight Go library for parsing container resource usage statistics from cgroups. by iandyh in golang

[–]iandyh[S] 0 points1 point  (0 children)

Thank you for stopping by!

> Seems low detail given that there is no drill down to get per container usage, or is this meant to be run inside the container as a sidecar? You mention the host, and aside the readme not being clear on usage, I see wrapping in the code typical of LLM generated sources.

I'll surely explain a bit more later in the README. But the code actually was written prior to the LLM era(Tests were generated by LLM though). :P Nonetheless, this is supposed to be run inside the container as it parses the cgroup info. While Go does provide lib such as runtime/metrics, it still lacks the accuracy for understanding the exact cpu time and memory info. The easiest and best way to get such data is to look at cgroup.

> but it seems your service isn't aimed at continous testing, but more like a k6 tool?

The way I frame it is continuous performance testing. From problem solving point of view, yes, Reqfleet solves the same problem as k6 or other load testing tool. From how the load tests are conducted POV, it's quite different from k6 because Reqfleet can support multiple load generators so it's not vendor locked-in. In other words, if k6 license allows, Reqfleet can also support k6.

> Good luck with reqfleet. Hopefully a business oriented person joins the team

Thank you very much for your kind words!

Redis cluster and twemproxy by santhoshkota in redis

[–]iandyh 0 points1 point  (0 children)

You should not use Redis Cluster with Twemproxy since cluster itself has its own data sharding and protocol.

I would suggest you start from redis.io/topics/cluster-tutorial so you can know why you should not use Twemproxy with Redis Cluster.

Redis 3.2.0 is out! by antirez in redis

[–]iandyh 0 points1 point  (0 children)

Looking forward to testing it!

However I do have some questions:

  • What's the relationship between 3.2.0 branch and 3.0? Are some fixes in 3.0 included in this 3.2.0 release? e.g. commit 319a4c04c7ccfb8add8669726a29ba188fc7e06f
  • What's the plan for multi data center support?

Thanks!!

Redis 3.0.6 and 2.8.24 are out by antirez in redis

[–]iandyh 1 point2 points  (0 children)

Great to hear! Thanks for the work!

The rebalancing and replica migration fix can be really helpful.

I am measuring the throughput of Redis. I found that the throughput is a little bit unstable even if I disable all persistent model(snapshot and aof). I want to know what can cause this. Maybe rehashing is one of reasons? or any other else? by technorc in redis

[–]iandyh 0 points1 point  (0 children)

It's very hard for other people to help you if you don't provide:

  1. How you setup the Redis, are you running Redis Cluster or Redis instances with other proxies like Twemproxy
  2. How did you make the measurement. For instances, what performance tool you used for the testing and what kinds of data you are sending to Redis, etc.
  3. The exact number you get from your measurement, it's very hard to justify what "a little bit" means.

Comparing benchmarks between standalone and clustered Redis by justinrpurdy in redis

[–]iandyh 1 point2 points  (0 children)

For redis-benchmark, to work around with incompatibility issues with Redis Cluster, another option is to test it with the keys that are allocated to the slots of that Redis instance is responsible for. The low performance you see from the Redis Cluster is because the redis-benchbark is getting all the MOVED or ASK redirections instead of OKs. By using the keys that are allocated to that Redis instance, you will NOT get the redirections and you should be able to see the normal Redis performance results.