-
-
Notifications
You must be signed in to change notification settings - Fork 3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
huge write IO without reason #7456
Comments
Hey @skliarie, has the situation changed in the last 3 days? We need some additional information to your configuration:
Can you provide the debug information from the daemon when the daemon runs the unexpected IO workload? |
I use flatfs. cat /tmp/ipfs_repo_statNumObjects: 27482408 |
Thanks! Do you run any operations on your node via API or access any data via the http gateway? Do you have any service running, like a system monitoring agent, which supports IPFS and accesses the API to collect any metrics? Does this issue persists when you restart your daemon, if so, does this issue start right away or after some delay? |
I have no http gateway, only the API. |
The repo will grow as the DHT stores data (and as you send out providers for data), but 20-30KB/s is way too fast. How are you calculating disk usage? Are you seeing the disk usage reported by In terms of the disk reads, this is probably bitswap. You're connected to a lot of peers that are probably looking for data. You may also want to set |
"ipfs repo stat" takes too long time to execute, I do df for that. I have BloomFilterSize 0, I guess it is unlimited, no? If yes, this explains huge size of the IPFS process:
And I do see (using iotop) that it is ipfs process that causes the writes and not BTRFS:
The writes don't have constant speed, it fluctuates between 0 to 40MB/s. I tried to find correlation between the writes (vmstat -n 1) and bitswap operation counters (watch ipfs stats bitswap), to no avail. One thing I noticed, is that the writes are coming in bursts. See attached output of vmstat -n 1 for 10 mins. It looks like there are some buffers that are flushed once in a while. Keep in mind that the node has huge number of peers (8755 at the moment) and 3TB worth of various popular pinsets. |
Find attached imon.sh script I wrote to monitor the ipfs node and output for several hours that it produces. |
0 means 0 (disabled). IPFS memory usage is usually correlated with the number of peers you have. Looking at the profile, I see what's going on. The problem is the DHT. Your node is backed up trying to write incoming provider records to disk: libp2p/go-libp2p-kad-dht#675. It could just be that your disk is too slow, but I'm wondering if your node just happens to be close to some really popular content. For now, I'd try running your daemon with "dhtclient". cc @aschmahmann |
ipfs 0.6.0, switched to dhtclient, the args are now "--routing=dhtclient --migrate=true --enable-pubsub-experiment". BloomFilterSize": 536870912. |
It dropped because peers are no longer trying to connect to you to advertise/find content in the DHT. Now, all of your peers are:
|
Closing as there's nothing actionable here, unfortunately. |
Version information:
go-ipfs version: 0.5.1-8431e2e
Repo version: 9
System version: amd64/linux
Golang version: go1.13.10
runs as docker container, taken from ipfs/go-ipfs:v0.5.1
Description:
Repo of 3TB that has many different pins. No ongoing download in progress, but the repo still grows at speed of 20-30 KBytes/s (BTRFS, noatime,compress=zlib:3,space_cache). At the same time, average IO is 20-30 MegaBytes (!) per second.
The IO is pretty random that slow down magnetic media tremendously, with average 2-15 ipfs processes constantly sitting in I/O blocked state:
The text was updated successfully, but these errors were encountered: