Por que a velocidade de gravação na NIC pode ser uma fração da velocidade de leitura?

1

Eu tenho dois servidores (Windows 2008 R2), cada um com uma NIC x710-DA2, conectado em cruz por uma conexão de 10 Gbps.

Eu posso ler um mergulho difícil de uma máquina, da outra, a 250 MegaBytes / seg, mas a velocidade de gravação é de apenas 20 megabytes / s.

O mesmo acontece se eu experimentar o experimento do outro servidor.

O que pode estar causando a velocidade de gravação tão lenta?

Adicional

Aqui está o código que eu uso para testar. Basta alterar fileURL para apontar para drives diferentes.

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("");

}

}

    
por ManInMoon 04.04.2016 / 16:25

0 respostas