2015-08-20 1 views
0

Я запускаю python 2.7.8 и наблюдающ ухудшение производительности 23% на ubuntu 14.04 по сравнению с 10.04 с простым API socket.recv. Я могу поделиться своим кодом, точными номерами производительности и т. Д. Для всех, на кого можно смотреть.23% ухудшение производительности на ubuntu 14.04 с socket.recv

Вот мой сервер:

#!/usr/bin/python   # This is server.py file 

import socket    # Import socket module 
import sys 

s = socket.socket()   # Create a socket object 
host = socket.gethostname() # Get local machine name 
port = 12345    # Reserve a port for your service. 
s.bind((host, port))  # Bind to the port 
f = open ("file", "r") 
fdata = f.read(100000000) 
s.listen(5)     # Now wait for client connection. 
while True: 
    c, addr = s.accept()  # Establish connection with client. 
    print 'Got connection from', addr 
    if sys.argv[1] == '1': 
     c.send('Thank you for connecting') 
    elif sys.argv[1] == '2': 
     c.send(fdata) 
    c.close() 

Вот мой клиент:

#!/usr/bin/python   # This is client.py file 

import socket    # Import socket module 
import sys 
import time 
s = socket.socket()   # Create a socket object 
host = socket.gethostname() # Get local machine name 
port = 12345    # Reserve a port for your service. 
s.connect((host, port)) 

i = 0 
start = time.time() 
while i < int(sys.argv[1]): 
    s.recv(100000000) 
    i = i + 1 
end = time.time() 
print "Time taken is %s" % (end - start) 
s.close 

Когда я бег 10 миллионов ПРИЕМА лет, на убунте 14.04 он занимает 375 секунд, в то время как на Ubuntu 10.04 она занимает только 305 секунд.

+0

Вы должны добавить дополнительную информацию о снижении производительности, коде, времени ... – Hacketo

+0

Посмотрите на управление мощностью процессора ubuntu. Возможно, он работает в режиме powerave (я думаю, что это по умолчанию), и вы можете переключить его на * ondemand * или * performance *. –

+0

@imaluengo: Я попытался отключить режим powerave (sudo pm-powersave false) 14.04, но все равно получить одинаковые показатели производительности. –

ответ

2

Предполагая, что вы используете одно и то же оборудование, у вас все еще есть много изменений между 10.04 и 14.04, то есть разные ядра, разные библиотеки, разные питоны, возможно, другая системная настройка и т. Д. Поэтому не ожидайте, что кто-нибудь укажет на причину за это замедляется ваш очень высокий уровень.

Просто для того, чтобы дать представление о том, где могут возникать такие проблемы с производительностью: изменения в планировщике или процессы, выполняемые в одной и той же системе, могут привести к различной нагрузке на процессор. Если процессор становится слишком горячим, он будет вынужден остыть, работая медленнее, что может привести к большой разнице в производительности. С другой стороны, если процессор становится слишком холостым, он переходит в различные режимы энергосбережения, и пробуждение от них занимает некоторое время, что также влияет на производительность. Другими вещами, которые в значительной степени влияют на производительность, являются кэши процессора, то есть если соответствующий код python полностью вписывается в кеш процессора в 10,04 и теперь просто слишком велик, вы можете получить серьезную разницу в производительности.

+0

Я установил точно такой же python 2.7.8 на обе системы. Я ищу, по крайней мере, какую-то определенную настройку и т. Д., Которые я мог бы сделать для достижения такого же уровня производительности. Я понимаю, что некоторые вещи могут выходить из-под контроля. –

+0

@SameerMahajan: exakt такой же python, вероятно, не означает тот же libc, макет памяти, тот же самый компилятор, те же параметры компилятора и т. Д. Если вы хотите сузить проблему, понизьте систему как можно скорее (т.е. должны выполняться только основные процессы) и использовать тесты нижнего уровня, такие как uperf, чтобы узнать, на каком уровне системы вы можете видеть, какая разница в производительности. Это может быть на уровне python, оно может быть ниже, это может быть причиной других процессов, это может быть вызвано теплом .... Слишком много факторов, поэтому нельзя указать на одну мелодию. –

+0

@SameerMahajan: вы также можете перейти к [OpenBenchmarking] (https://openbenchmarking.org/), чтобы посмотреть на те оценки, которые другие сделали. Если вы сравниваете две версии ubuntu, вы можете часто видеть, что одни тесты становятся лучше, а другие ухудшаются. Таким образом, вы можете лучше взглянуть на общую производительность вашей системы, а не на микрообъекты. –

 Смежные вопросы

  • Нет связанных вопросов^_^