为什么 NIC 上的写入速度可能是读取速度的一小部分?

为什么 NIC 上的写入速度可能是读取速度的一小部分?

我有 2 台服务器(Windows 2008 R2),每台都有一个 x710-DA2 NIC,通过 10Gbps 线路交叉连接。

我可以以每秒 250 兆字节的速度从另一台机器读取一台机器的硬盘,但写入速度只有每秒 20 兆字节。

如果我从另一台服务器尝试该实验,情况也是如此。

是什么原因导致写入速度这么慢?

额外的

这是我用来测试的代码。只需更改 fileURL 以指向不同的驱动器即可。

public void Go()
{
    List<string> lines = new List<string>();

    for (int i = 0; i < 10000; i++)
    {
        lines.Add( "a whole line of text");
    }

    Stopwatch sw = new Stopwatch();

    sw.Start();

    string fileURL = @"C:\test.txt";
    //string fileURL = @"\\xxx.xxx.xxx.xxx\ShareName\test.txt";

    textBox1.AppendText("\nTest file URL: " + fileURL + "\n");

    int n = 5000;
    for (int j = 0; j < n; j++)
    {
        File.WriteAllLines(fileURL, lines.ToArray<string>());
    }

    sw.Stop();

    FileInfo fi = new FileInfo(fileURL);

    double speed = (fi.Length * n) / (sw.Elapsed.TotalSeconds * 1000000);

    textBox1.AppendText("Write test Elapsed: " + sw.Elapsed.TotalSeconds.ToString("f2") + " MegaBytes/Second: " + speed.ToString("f2") + "\n");

    sw.Restart();

    for (int j = 0; j < n; j++)
    {
        var inLines = File.ReadAllLines(fileURL);
    }

    sw.Stop();

    speed = (fi.Length * n) / (sw.Elapsed.TotalSeconds * 1000000);

    textBox1.AppendText("Read test Elapsed:  " + sw.Elapsed.TotalSeconds.ToString("f2") + " MegaBytes/Second: " + speed.ToString("f2") + "\n");

    //Console.WriteLine("");

}

}

相关内容