Данные

processes <- 1:24
times <- c(
  28.727,
  29.91,
  30.116,
  31.021,
  31.036,
  30.863,
  30.855,
  32.821,
  36.895,
  41.233,
  45.261,
  49.398,
  53.7,
  57.640,
  61.820,
  65.882,
  69.829,
  74.414,
  78.419,
  83.051,
  86.963,
  92.243,
  95.622,
  99.274
)

#Default point mark for a graphic
mark = 19

# Chunk size for a synthetic table
q_uncompressed = 2048

# Compression ratio
q_compressed = 2048 / 4

Время исполнения команды copy в зависимости от количества параллельных процессов команды copy

Синяя отсечка означает превышение количества слушающих процессов postgres и обращение к уже занятым.

mybar <-
  barplot(
    height = times,
    names = processes,
    col = "#69b3a2",
    main = expression("Время" ~ bold("copy") ~ "vs количество параллельных процессов"),
    xlab = "процессы",
    ylab = "время, с",
    ylim = c(0, max(times) + 2),
    cex.main = 1,
    font.main = 1
  )
lines(mybar, times, type = "o", pch = mark)
text(x = mybar,
     y = times / 2,
     labels = round(y, 0))
abline(v = mean(mybar[12:13]), col = "blue")


Расжатые данные

Скорость выполнения процессов copy в зависимости от количества параллельных процессов

plot(
  processes,
  y = processes * q_uncompressed / times,
  xaxt = "n",
  type = "o",
  bty = "l",
  pch = mark,
  ylim = c(0, q_uncompressed / times[1] * 24),
  col = "#69b3a2",
  main = expression(
    "Процессы" ~ bold("copy") ~ "vs количество параллельных процессов"
  ),
  xlab = "процессы",
  ylab = "МБ/с",
)
axis(1, at = x, las = 2)
expected_speed = q_uncompressed / times[1] * processes
lines(expected_speed,
      type = "o",
      pch = mark,
      col = "red")
legend(
  "topleft",
  legend = c("реальные значения", "максимальные теоретические"),
  col = c("#69b3a2", "red"),
  pch = c(mark, mark),
  inset = c(0.03, 0.03)
)
abline(v = mean(12:13), col = "blue")

Скорость выполнения процесса copy в зависимости от количества параллельных процессов

plot(
  x = processes,
  y = q_uncompressed * processes / times / processes,
  xaxt = "n",
  ylim = c(0, q_uncompressed / times[1]),
  type = "o",
  bty = "l",
  pch = mark,
  col = "#69b3a2",
  main = expression("Скорость выполнения" ~ bold("copy") ~ "приведённо на процесс"),
  xlab = "процессов",
  ylab = "МБ/с",
)
abline(v = mean(12:13), col = "blue")
axis(1, at = processes, las = 2)


Сжатые данные

Скорость выполнения процессов copy в зависимости от количества параллельных процессов

plot(
  processes,
  y = processes * q_compressed / times,
  xaxt = "n",
  type = "o",
  bty = "l",
  pch = mark,
  ylim = c(0, q_compressed / times[1] * 24),
  col = "#69b3a2",
  main = expression(
    "Процессы" ~ bold("copy") ~ "vs количество параллельных процессов"
  ),
  xlab = "процессы",
  ylab = "МБ/с",
)
axis(1, at = x, las = 2)
expected_speed = q_compressed / times[1] * processes
lines(expected_speed,
      type = "o",
      pch = mark,
      col = "red")
legend(
  "topleft",
  legend = c("реальные значения", "максимальные теоретические"),
  col = c("#69b3a2", "red"),
  pch = c(mark, mark),
  inset = c(0.03, 0.03)
)
abline(v = mean(12:13), col = "blue")

Скорость выполнения процесса copy в зависимости от количества параллельных процессов

LS0tCnRpdGxlOiAicG9zdGdyZXMgcGFyYWxsZWwgY29waWVzIgpvdXRwdXQ6CiAgaHRtbF9ub3RlYm9vazoKICAgIGNvZGVfZm9sZGluZzogaGlkZQplY2hvOiBmYWxzZQotLS0KCiMg0JTQsNC90L3Ri9C1CgpgYGB7cn0KcHJvY2Vzc2VzIDwtIDE6MjQKdGltZXMgPC0gYygKICAyOC43MjcsCiAgMjkuOTEsCiAgMzAuMTE2LAogIDMxLjAyMSwKICAzMS4wMzYsCiAgMzAuODYzLAogIDMwLjg1NSwKICAzMi44MjEsCiAgMzYuODk1LAogIDQxLjIzMywKICA0NS4yNjEsCiAgNDkuMzk4LAogIDUzLjcsCiAgNTcuNjQwLAogIDYxLjgyMCwKICA2NS44ODIsCiAgNjkuODI5LAogIDc0LjQxNCwKICA3OC40MTksCiAgODMuMDUxLAogIDg2Ljk2MywKICA5Mi4yNDMsCiAgOTUuNjIyLAogIDk5LjI3NAopCgojRGVmYXVsdCBwb2ludCBtYXJrIGZvciBhIGdyYXBoaWMKbWFyayA9IDE5CgojIENodW5rIHNpemUgZm9yIGEgc3ludGhldGljIHRhYmxlCnFfdW5jb21wcmVzc2VkID0gMjA0OAoKIyBDb21wcmVzc2lvbiByYXRpbwpxX2NvbXByZXNzZWQgPSAyMDQ4IC8gNApgYGAKCi0tLQoKIyMg0JLRgNC10LzRjyDQuNGB0L/QvtC70L3QtdC90LjRjyDQutC+0LzQsNC90LTRiyAqY29weSog0LIg0LfQsNCy0LjRgdC40LzQvtGB0YLQuCDQvtGCINC60L7Qu9C40YfQtdGB0YLQstCwINC/0LDRgNCw0LvQu9C10LvRjNC90YvRhSDQv9GA0L7RhtC10YHRgdC+0LIg0LrQvtC80LDQvdC00YsgKmNvcHkqCgrQodC40L3Rj9GPINC+0YLRgdC10YfQutCwINC+0LfQvdCw0YfQsNC10YIg0L/RgNC10LLRi9GI0LXQvdC40LUg0LrQvtC70LjRh9C10YHRgtCy0LAg0YHQu9GD0YjQsNGO0YnQuNGFINC/0YDQvtGG0LXRgdGB0L7QsiAqcG9zdGdyZXMqINC4INC+0LHRgNCw0YnQtdC90LjQtSDQuiDRg9C20LUg0LfQsNC90Y/RgtGL0LwuCgpgYGB7cn0KbXliYXIgPC0KICBiYXJwbG90KAogICAgaGVpZ2h0ID0gdGltZXMsCiAgICBuYW1lcyA9IHByb2Nlc3NlcywKICAgIGNvbCA9ICIjNjliM2EyIiwKICAgIG1haW4gPSBleHByZXNzaW9uKCLQktGA0LXQvNGPIiB+IGJvbGQoImNvcHkiKSB+ICJ2cyDQutC+0LvQuNGH0LXRgdGC0LLQviDQv9Cw0YDQsNC70LvQtdC70YzQvdGL0YUg0L/RgNC+0YbQtdGB0YHQvtCyIiksCiAgICB4bGFiID0gItC/0YDQvtGG0LXRgdGB0YsiLAogICAgeWxhYiA9ICLQstGA0LXQvNGPLCDRgSIsCiAgICB5bGltID0gYygwLCBtYXgodGltZXMpICsgMiksCiAgICBjZXgubWFpbiA9IDEsCiAgICBmb250Lm1haW4gPSAxCiAgKQpsaW5lcyhteWJhciwgdGltZXMsIHR5cGUgPSAibyIsIHBjaCA9IG1hcmspCnRleHQoeCA9IG15YmFyLAogICAgIHkgPSB0aW1lcyAvIDIsCiAgICAgbGFiZWxzID0gcm91bmQoeSwgMCkpCmFibGluZSh2ID0gbWVhbihteWJhclsxMjoxM10pLCBjb2wgPSAiYmx1ZSIpCmBgYAoKLS0tCgojINCg0LDRgdC20LDRgtGL0LUg0LTQsNC90L3Ri9C1CgojIyMg0KHQutC+0YDQvtGB0YLRjCDQstGL0L/QvtC70L3QtdC90LjRjyDQv9GA0L7RhtC10YHRgdC+0LIgKmNvcHkqINCyINC30LDQstC40YHQuNC80L7RgdGC0Lgg0L7RgiDQutC+0LvQuNGH0LXRgdGC0LLQsCDQv9Cw0YDQsNC70LvQtdC70YzQvdGL0YUg0L/RgNC+0YbQtdGB0YHQvtCyCgpgYGB7cn0KcGxvdCgKICBwcm9jZXNzZXMsCiAgeSA9IHByb2Nlc3NlcyAqIHFfdW5jb21wcmVzc2VkIC8gdGltZXMsCiAgeGF4dCA9ICJuIiwKICB0eXBlID0gIm8iLAogIGJ0eSA9ICJsIiwKICBwY2ggPSBtYXJrLAogIHlsaW0gPSBjKDAsIHFfdW5jb21wcmVzc2VkIC8gdGltZXNbMV0gKiAyNCksCiAgY29sID0gIiM2OWIzYTIiLAogIG1haW4gPSBleHByZXNzaW9uKAogICAgItCf0YDQvtGG0LXRgdGB0YsiIH4gYm9sZCgiY29weSIpIH4gInZzINC60L7Qu9C40YfQtdGB0YLQstC+INC/0LDRgNCw0LvQu9C10LvRjNC90YvRhSDQv9GA0L7RhtC10YHRgdC+0LIiCiAgKSwKICB4bGFiID0gItC/0YDQvtGG0LXRgdGB0YsiLAogIHlsYWIgPSAi0JzQkS/RgSIsCikKYXhpcygxLCBhdCA9IHgsIGxhcyA9IDIpCmV4cGVjdGVkX3NwZWVkID0gcV91bmNvbXByZXNzZWQgLyB0aW1lc1sxXSAqIHByb2Nlc3NlcwpsaW5lcyhleHBlY3RlZF9zcGVlZCwKICAgICAgdHlwZSA9ICJvIiwKICAgICAgcGNoID0gbWFyaywKICAgICAgY29sID0gInJlZCIpCmxlZ2VuZCgKICAidG9wbGVmdCIsCiAgbGVnZW5kID0gYygi0YDQtdCw0LvRjNC90YvQtSDQt9C90LDRh9C10L3QuNGPIiwgItC80LDQutGB0LjQvNCw0LvRjNC90YvQtSDRgtC10L7RgNC10YLQuNGH0LXRgdC60LjQtSIpLAogIGNvbCA9IGMoIiM2OWIzYTIiLCAicmVkIiksCiAgcGNoID0gYyhtYXJrLCBtYXJrKSwKICBpbnNldCA9IGMoMC4wMywgMC4wMykKKQphYmxpbmUodiA9IG1lYW4oMTI6MTMpLCBjb2wgPSAiYmx1ZSIpCmBgYAoKIyMjINCh0LrQvtGA0L7RgdGC0Ywg0LLRi9C/0L7Qu9C90LXQvdC40Y8g0L/RgNC+0YbQtdGB0YHQsCAqY29weSog0LIg0LfQsNCy0LjRgdC40LzQvtGB0YLQuCDQvtGCINC60L7Qu9C40YfQtdGB0YLQstCwINC/0LDRgNCw0LvQu9C10LvRjNC90YvRhSDQv9GA0L7RhtC10YHRgdC+0LIKCmBgYHtyfQpwbG90KAogIHggPSBwcm9jZXNzZXMsCiAgeSA9IHFfdW5jb21wcmVzc2VkICogcHJvY2Vzc2VzIC8gdGltZXMgLyBwcm9jZXNzZXMsCiAgeGF4dCA9ICJuIiwKICB5bGltID0gYygwLCBxX3VuY29tcHJlc3NlZCAvIHRpbWVzWzFdKSwKICB0eXBlID0gIm8iLAogIGJ0eSA9ICJsIiwKICBwY2ggPSBtYXJrLAogIGNvbCA9ICIjNjliM2EyIiwKICBtYWluID0gZXhwcmVzc2lvbigi0KHQutC+0YDQvtGB0YLRjCDQstGL0L/QvtC70L3QtdC90LjRjyIgfiBib2xkKCJjb3B5IikgfiAi0L/RgNC40LLQtdC00ZHQvdC90L4g0L3QsCDQv9GA0L7RhtC10YHRgSIpLAogIHhsYWIgPSAi0L/RgNC+0YbQtdGB0YHQvtCyIiwKICB5bGFiID0gItCc0JEv0YEiLAopCmFibGluZSh2ID0gbWVhbigxMjoxMyksIGNvbCA9ICJibHVlIikKYXhpcygxLCBhdCA9IHByb2Nlc3NlcywgbGFzID0gMikKYGBgCgotLS0KCiMg0KHQttCw0YLRi9C1INC00LDQvdC90YvQtQoKIyMjINCh0LrQvtGA0L7RgdGC0Ywg0LLRi9C/0L7Qu9C90LXQvdC40Y8g0L/RgNC+0YbQtdGB0YHQvtCyICpjb3B5KiDQsiDQt9Cw0LLQuNGB0LjQvNC+0YHRgtC4INC+0YIg0LrQvtC70LjRh9C10YHRgtCy0LAg0L/QsNGA0LDQu9C70LXQu9GM0L3Ri9GFINC/0YDQvtGG0LXRgdGB0L7QsgoKYGBge3J9CnBsb3QoCiAgcHJvY2Vzc2VzLAogIHkgPSBwcm9jZXNzZXMgKiBxX2NvbXByZXNzZWQgLyB0aW1lcywKICB4YXh0ID0gIm4iLAogIHR5cGUgPSAibyIsCiAgYnR5ID0gImwiLAogIHBjaCA9IG1hcmssCiAgeWxpbSA9IGMoMCwgcV9jb21wcmVzc2VkIC8gdGltZXNbMV0gKiAyNCksCiAgY29sID0gIiM2OWIzYTIiLAogIG1haW4gPSBleHByZXNzaW9uKAogICAgItCf0YDQvtGG0LXRgdGB0YsiIH4gYm9sZCgiY29weSIpIH4gInZzINC60L7Qu9C40YfQtdGB0YLQstC+INC/0LDRgNCw0LvQu9C10LvRjNC90YvRhSDQv9GA0L7RhtC10YHRgdC+0LIiCiAgKSwKICB4bGFiID0gItC/0YDQvtGG0LXRgdGB0YsiLAogIHlsYWIgPSAi0JzQkS/RgSIsCikKYXhpcygxLCBhdCA9IHgsIGxhcyA9IDIpCmV4cGVjdGVkX3NwZWVkID0gcV9jb21wcmVzc2VkIC8gdGltZXNbMV0gKiBwcm9jZXNzZXMKbGluZXMoZXhwZWN0ZWRfc3BlZWQsCiAgICAgIHR5cGUgPSAibyIsCiAgICAgIHBjaCA9IG1hcmssCiAgICAgIGNvbCA9ICJyZWQiKQpsZWdlbmQoCiAgInRvcGxlZnQiLAogIGxlZ2VuZCA9IGMoItGA0LXQsNC70YzQvdGL0LUg0LfQvdCw0YfQtdC90LjRjyIsICLQvNCw0LrRgdC40LzQsNC70YzQvdGL0LUg0YLQtdC+0YDQtdGC0LjRh9C10YHQutC40LUiKSwKICBjb2wgPSBjKCIjNjliM2EyIiwgInJlZCIpLAogIHBjaCA9IGMobWFyaywgbWFyayksCiAgaW5zZXQgPSBjKDAuMDMsIDAuMDMpCikKYWJsaW5lKHYgPSBtZWFuKDEyOjEzKSwgY29sID0gImJsdWUiKQpgYGAKCiMjIyDQodC60L7RgNC+0YHRgtGMINCy0YvQv9C+0LvQvdC10L3QuNGPINC/0YDQvtGG0LXRgdGB0LAgKmNvcHkqINCyINC30LDQstC40YHQuNC80L7RgdGC0Lgg0L7RgiDQutC+0LvQuNGH0LXRgdGC0LLQsCDQv9Cw0YDQsNC70LvQtdC70YzQvdGL0YUg0L/RgNC+0YbQtdGB0YHQvtCyCgpgYGB7ciBlY2hvPWZhbHNlfQpwbG90KAogIHggPSBwcm9jZXNzZXMsCiAgeSA9IHFfY29tcHJlc3NlZCAqIHByb2Nlc3NlcyAvIHRpbWVzIC8gcHJvY2Vzc2VzLAogIHhheHQgPSAibiIsCiAgeWxpbSA9IGMoMCwgcV9jb21wcmVzc2VkIC8gdGltZXNbMV0pLAogIHR5cGUgPSAibyIsCiAgYnR5ID0gImwiLAogIHBjaCA9IG1hcmssCiAgY29sID0gIiM2OWIzYTIiLAogIG1haW4gPSBleHByZXNzaW9uKCLQodC60L7RgNC+0YHRgtGMINCy0YvQv9C+0LvQvdC10L3QuNGPIiB+IGJvbGQoImNvcHkiKSB+ICLQv9GA0LjQstC10LTRkdC90L3QviDQvdCwINC/0YDQvtGG0LXRgdGBIiksCiAgeGxhYiA9ICLQv9GA0L7RhtC10YHRgdC+0LIiLAogIHlsYWIgPSAi0JzQkS/RgSIsCikKYWJsaW5lKHYgPSBtZWFuKDEyOjEzKSwgY29sID0gImJsdWUiKQpheGlzKDEsIGF0ID0gcHJvY2Vzc2VzLCBsYXMgPSAyKQpgYGA=