mirror of
https://github.com/deepseek-ai/3FS.git
synced 2026-11-05 00:47:47 +00:00
[GH-ISSUE #140] RPC timeout during a stressful write test #81
Labels
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
deepseek-ai/3FS#81
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @201608ybs on GitHub (Mar 10, 2025).
Original GitHub issue: https://github.com/deepseek-ai/3FS/issues/140
Hi, we deploy 3FS on Alibaba Cloud ECS 8th generation instance with its Elastic RDMA Interface, following this document.
The configuration of our cluster is as following:
Additionally, the meta node also serves as a FUSE client.
We start 128 fio write jobs on each FUSE client, which write to 3FS simultaneously.
The fio process reports the following error:
We found the following errors in
/var/log/3fs/hf3fs_fuse_main-err.log:The storage node also reports errors in
/var/log/3fs/storage_main-err.log.We believe that this error is related to the reliable forwarding timeout and have adjusted different timeout parameters in the storage_main.toml. Finally, we resolved this error by increasing the
retry_first_timeoutto 500ms (default is 100ms). So, what does theretry_first_timeoutparameter indicate for 3FS?sed -i "s/retry_first_wait = '100ms'/retry_first_wait = '500ms'/g" /opt/3fs/etc/storage_main.toml@zartbot commented on GitHub (Mar 10, 2025):
Additionally, during the write stress test, we discovered that the meta server encounters issues when reading the fdb.cluster file due to system ulimit restrictions. This results in the file failing to open and causing errors. These problems can be mitigated by modifying the relevant settings.
@RainSnowIceRain commented on GitHub (Mar 11, 2025):
Under a concurrency load of 256 writes, the entire cluster experiences a complete stall. Could you please specify which parameters in which configuration files should be adjusted to address this issue?
@201608ybs commented on GitHub (Mar 11, 2025):
Hi, we conduct our test on Alibaba Cloud and make following modifications in our environment:
ALIGN_SIZEto 4096 insrc/storage/chunk_engine/src/utils/aligned.rsas mentioned in this issue, which should be equal to your disk sector size.max_sgeparameter to 1 in all configuration files(*.toml) on all nodes as mentioned in this document.retry_first_timeoutto 500ms in thestorage_main.tomlon all storage nodes to solve the RPC timeout problem mentioned above.@RainSnowIceRain commented on GitHub (Mar 11, 2025):
@201608ybs Excellent! Thank you very much! We have also referred to the deployment blog on Alibaba Cloud. We are currently encountering a performance issue:
However, neither the CPU, DRAM, NIC, nor the SSDs on the client/metadata node and storage nodes reached their maximum utilization. The 100Gbps NIC only achieved an actual throughput of approximately 40Gbps.
Is this issue attributable to suboptimal cluster deployment methods, inadequate 3FS configurations, or improper fio settings?
@201608ybs commented on GitHub (Mar 11, 2025):
Oh, I observe similar problem using FUSE clients. However, as the number of Fuse Clients increases, the network traffic of the storage nodes also increases. I am uncertain about the root cause of this issue now. Maybe you can consult with the 3FS developers.
@zartbot commented on GitHub (Mar 16, 2025):
which type of instance are you used ? 40Gbps throughput seems to be storage BW policy limited on some type of instance if you did not use local disk.
@RainSnowIceRain commented on GitHub (Mar 16, 2025):
@zartbot The client, meta, and storage nodes are all equipped with local NVMe SSDs. In our two-storage-node cluster with a two-replica storage configuration, FIO tests revealed that the NIC bandwidth utilization on storage nodes was only 40%. Does this indicate potential latent issues in the 3FS two-replica setup?
@201608ybs commented on GitHub (Mar 18, 2025):
Hi, have you checked the NIC bandwidth of the FUSE client node? You can refer to the official document to find out the detailed information, such as the NIC bandwidth and IOPS, for your instance type. I have tried to reproduce your problem with similar configurations (2 storage nodes with 2 replicas). The detailed configuration of my cluster is as follows:
The output of 3FS
list-nodescommand:The output of 3FS
list-targetscommand:The output of 3FS
list-chainscommand:In the first attempt, I got a read bandwidth of 3.8 GB/s in the FIO read test with 16 jobs. Then, I found that the bandwidth of the FUSE client node (ecs.g8i.16xlarge) is only 32 Gbps.
After I increased the NIC bandwidth of the FUSE client node (ecs.g8i.48xlarge), the read bandwidth increased from 3.8 GB/s to 9.9 GB/s.
The fio test command is as following:
/root/fio/fio -numjobs=16 -fallocate=none -iodepth=1 -ioengine=external:/root/hf3fs_usrbio.so -direct=1 -rw=read -bs=1MB --group_reporting -size=100MB -time_based -runtime=60 -iodepth_batch_submit=256 -iodepth_batch_complete_min=256 -iodepth_batch_complete_max=256 -name=/3fs/stage/test/test1 -mountpoint=/3fs/stage -ior_depth=1@RainSnowIceRain commented on GitHub (Mar 19, 2025):
@201608ybs Thank you very much! In fact, we are using physical machines. Under a read workload with 64 threads and a block size of 1 MB, the bandwidth measured by FIO is 3.3 GB/s, while the NIC bandwidth is 43 Gb/s.
When we increase the concurrency from 64 to 128 and the block size from 1 MB to 4 MB, the NIC bandwidth increases to 55 Gb/s, but the FIO bandwidth decreases to 2.9 GB/s.
Our test workload is as follows:
fio -thread -verify=0 -numjobs=128 -ioengine=external:/root/software/3fs/benchmarks/fio_usrbio/hf3fs_usrbio.so -direct=1 -rw=read -bs=4M --group_reporting=1 -size=100M -time_based=1 -ramp_time=0 -runtime=120 -name=direct_read_bw -directory=/3fs/stage -mountpoint=/3fs/stage
We are not sure whether a similar phenomenon would occur on cloud-based virtual machines?