标签: slowdown

如何确定网站缓慢的原因?

我在接受采访时被问到这个问题:

"假设你拥有一个服务器位于某个远程位置的网站.有一天,有些用户打电话/发电子邮件,你说网站速度慢得多.你怎么知道网站速度慢的原因?另外,当你自己检查网站时任何用户(使用您的浏览器),网站表现得很好."

我只想到一件事(被击落):

  • 检查服务器日志以分析传入流量.也许是DoS攻击或特别高的流量.采访者告诉我假设服务器有正常的流量,没有DoS.

我有点失落,因为我从未想过这个问题.我几乎不知道如何运行服务器/网站.因此,如果有人能突出一些方法,那就太好了.

在谷歌搜索时,我只能找到这篇相关的精彩文章.那篇文章现在对我来说太技术了,但我正在慢慢分解并理解它.

performance slowdown web

22
推荐指数
2
解决办法
5万
查看次数

超线程...使我的渲染器慢了10倍

执行摘要:如何在代码中指定OpenMP应该只为REAL内核使用线程,即不计算超线程的线程?

详细分析:多年来,我在空闲时间编写了一个仅限SW的开源渲染器(光栅化器/光线跟踪器).可以从这里获得GPL代码和Windows二进制文件:https: //www.thanassis.space/renderer.html 它在Windows,Linux,OS/X和BSD下编译并运行良好.

我上个月推出了一种光线追踪模式 - 生成的图片质量飙升.不幸的是,光线跟踪比光栅化要慢几个数量级.为了提高速度,就像我对光栅化器一样,我为光线跟踪器添加了OpenMP(和TBB)支持 - 以便轻松利用额外的CPU内核.光栅化和光线跟踪都很容易进行线程化(每个三角形工作 - 每像素工作).

在家里,凭借我的Core2Duo,第二核心帮助了所有模式 - 光栅化和光线跟踪模式的加速都在1.85x和1.9x之间.

问题:当然,我很想看到CPU的最高性能(我也玩"GPU",初步的CUDA端口),所以我想要一个坚实的基础进行比较.我把代码交给了我的一个好朋友,他可以使用16英寸,1500美元英特尔超级处理器的"野兽"机器.

他以"最重"模式运行它,光线跟踪模式......

......他的速度是我的Core2Duo的五分之一(!)

喘气 - 恐怖.刚刚发生了什么?

我们开始尝试不同的修改,补丁,......最终我们弄明白了.

通过使用OMP_NUM_THREADS环境变量,可以控制生成的OpenMP线程数.随着线程数从1增加到8,速度增加(接近线性增加).在我们越过8的那一刻,速度开始减弱,直到我的Core2Duo速度的五分之一,当使用所有16​​个核心时!

为什么8?

因为8是真实核心的数量.其他8个是...超线程的!

理论:现在,这对我来说是新闻 - 我看到超线程在其他算法中帮助很多(高达25%),所以这是出乎意料的.显然,即使每个超线程核心都有自己的寄存器(和SSE单元?),光线跟踪器也无法利用额外的处理能力.这引导我思考......

它可能不是缺乏处理能力 - 它是内存带宽.

光线跟踪器使用边界体积层次结构数据结构来加速光线三角形交叉.如果使用的芯超线程,则每个在一对"逻辑核"的,试图从在该数据结构不同的地方(即,在存储器中),以读 - 和CPU高速缓存(每对本地)完全捶打.至少,这是我的理论 - 任何建议都是最受欢迎的.

所以,问题是: OpenMP检测"核心"的数量并产生与之匹配的线程 - 也就是说,它包括计算中的超线程"核心".就我而言,这显然会导致灾难性的结果,速度方面.有谁知道如何使用OpenMP API(如果可能的话,可移植)只为REAL内核生成线程,而不是超线程的线程?

PS代码是开放的(GPL),可在上面的链接中找到,随时可以在您自己的机器上重现 - 我猜这将在所有超线程CPU中发生.

PPS原谅帖子的长度,我认为这是一种教育经历,想分享.

rendering renderer openmp hyperthreading slowdown

18
推荐指数
1
解决办法
3993
查看次数

为什么迭代元素数组乘法在numpy中减慢?

下面的代码再现了我在目前正在实现的算法中遇到的问题:

import numpy.random as rand
import time

x = rand.normal(size=(300,50000))
y = rand.normal(size=(300,50000))

for i in range(1000):
    t0 = time.time()
    y *= x
    print "%.4f" % (time.time()-t0)
    y /= y.max() #to prevent overflows
Run Code Online (Sandbox Code Playgroud)

问题是经过一些迭代后,事情开始逐渐变慢,直到一次迭代所花费的时间比最初多一倍.

放缓的情节 在此输入图像描述

Python进程的CPU使用率在整个时间内稳定在17-18%左右.

我正在使用:

  • Python 2.7.4 32位版本;
  • Numpy 1.7.1与MKL;
  • Windows 8.

python numpy slowdown

14
推荐指数
1
解决办法
753
查看次数

为什么转换CUDA网格(但不是它的线程块)仍然会减慢计算速度?

编辑:似乎,至少在这种情况下,转置网格对L2缓存带宽有负面影响.这是从视觉分析器获得的.原因尚不清楚.

我已经到了需要转置CUDA网格的GPU计算情况.因此,如果block_ {x,y}最初作用于数据区域d_ {x,y},则它现在作用于数据区域d_ {y,x},因此block_ {y,x}将作用于数据区域d_ {x, y}.下图显示了一个示例. 在此输入图像描述

值得一提的是,线程不会在每个块内部进行转置,也就是说,一旦定位了块,threadIdx.xthreadIdx.y值分别以正常方式用于它们的x和y偏移.

据我所知,理论上这个设计应该不会对性能产生任何影响,因为内存合并模式仍然保留,即块内的线程没有转置,只是网格重新排列其块.但是我发现在转置网格时,内核运行大约.比正常情况慢2倍.我做了一个玩具示例来说明情况.

?  transpose-grid ./prog 10000 10000 100 0
init data.....................done: zero matrix of 10000 x 10000
copy data to GPU..............done
preparing grid................done: block(32, 32, 1), grid(313, 313, 1)
normal_kernel (100 rep).......done: 0.935132 ms
verifying correctness.........ok
?  transpose-grid ./prog 10000 10000 100 1
init data.....................done: zero matrix of 10000 x 10000
copy data to GPU..............done
preparing grid................done: …
Run Code Online (Sandbox Code Playgroud)

c++ performance cuda block slowdown

13
推荐指数
1
解决办法
304
查看次数

WatiN Dispose()非常慢

当我处理Internet Explorer对象时,我的WatiN测试突然变得非常慢.

这是我的设置......

* Windows 7 (Evaluation Build 7100)
* Internet Explorer 8 (Version 8.0.7100.0)
* WatiN (Version 2.0.10.928)
Run Code Online (Sandbox Code Playgroud)

这很奇怪,因为测试在大约一周前工作正常.我认为这是最新的MS更新等等.

有任何想法吗?

performance watin windows-xp internet-explorer-8 slowdown

12
推荐指数
1
解决办法
1888
查看次数

vim 是否将整个文件读入内存

当我打开一个文件时,vim 会将其全部读入内存吗?当我打开大文件时,我的速度明显变慢。或者它正忙于计算某些东西(例如,行号)?

memory vim performance slowdown

8
推荐指数
1
解决办法
2183
查看次数

Visual Studio 2015非常慢的文件打开?

我刚刚在Windows 10机器上下载了VS15 2015社区,并且刚刚安装了所有默认软件包.无论出于何种原因,如果我尝试打开javascript文件或几乎任何其他扩展程序,它需要大约15-20秒才能加载.这段代码只写了文字中的单词test.现在无论出于何种原因,如果我决定右键单击javascript文件并选择

使用>"Microsoft Visual Studio版本选择器"打开而不是使用普通的Microsoft Visual Studio 2015,它会立即打开,在2-3秒内打开...

到底是怎么回事?这太刺激了!我已经重新安装了VS 3次,清除了所有旧垃圾文件,甚至尝试在没有安装单个工具或扩展程序的情况下运行它,除非我用Visual Studio版本选择器打开它,它仍然会以这种方式运行,这恰好不是在我的控制面板中的默认程序列表中列出,只是原始的Microsoft VS 15,所以我甚至无法将其设置为解决方法.如果有人知道可能出现的问题或可能的解决方法,请告诉我!谢谢!

javascript c# startup visual-studio slowdown

7
推荐指数
1
解决办法
467
查看次数

Python中的多处理:Numpy + Vector Summation - >巨大的减速

长篇文章请不要气馁.我尽量提供尽可能多的数据,我真的需要帮助解决这个问题:S.如果有新的提示或想法,我会每天更新

问题:

我尝试在并行进程的帮助下并行运行两个核心机器上的Python代码(以避免GIL),但是存在代码明显变慢的问题.例如,在一个核心机器上运行每个工作负载需要600秒,但在两个核心机器上运行需要1600秒(每个工作负载800秒).

我已经尝试过的:

  • 我测量了内存,似乎没有内存问题.[只在高点使用20%].

  • 我使用"htop"检查我是否真的在不同的核心上运行程序,或者我的核心亲和力是否搞砸了.但也没有运气,我的程序在我的所有内核上运行.

  • 问题是CPU限制的问题,因此我检查并确认我的代码在所有内核上以100%CPU运行,大多数情况下.

  • 我检查了进程ID,我确实产生了两个不同的进程.

  • 我将我提交给执行程序[e.submit(function,[...])]的函数更改为计算派函数并观察到了巨大的加速.所以问题很可能发生在我的process_function(...)中,我将其提交到执行程序而不是之前的代码中.

  • 目前我正在使用"并发"中的"期货"来平行任务.但我也试过"多处理"中的"池"类.但是,结果保持不变.

码:

  • 产卵过程:

    result = [None]*psutil.cpu_count()
    
    e = futures.ProcessPoolExecutor( max_workers=psutil.cpu_count() )
    
    for i in range(psutil.cpu_count()):
        result[i] = e.submit(process_function, ...)
    
    Run Code Online (Sandbox Code Playgroud)
  • process_function:

    from math import floor
    from math import ceil
    import numpy
    import MySQLdb
    import time
    
    db = MySQLdb.connect(...)
    cursor  = db.cursor()
    query = "SELECT ...."
    cursor.execute(query)
    
    [...]  #save db results into the variable db_matrix (30 columns, 5.000 rows)
    [...]  #save db results into the variable bp_vector (3 columns, 500 rows)
    [...]  #save …
    Run Code Online (Sandbox Code Playgroud)

python parallel-processing performance multiprocessing slowdown

7
推荐指数
1
解决办法
559
查看次数

其他未使用的CSS定义会降低浏览器的速度吗?

在使用了许多CMS并切割了许多HTML设计之后,当我看到SilverStripe使用CSS时,我被转换了.

从本质上讲,<div>根据您所在的页面更改标签中的ID将是一种浪费,并且更改<body>标签的类和ID将是更改特定页面的更简单方法.

在下列问题中,同事对此类定罪提出了质疑:

在特定网站上,我们有各种结构相似的页面.有些可能包含特殊形式,有些则可能没有.根据我们所在的子部分,所有特殊形式应具有不同的背景图像.

由于声称"额外的CSS行减慢了body.onLoads",我在CSS中编写所有背景预期的论点被拒绝了.

有人可以在各种案件中引用证据吗?案例包括:编码不良的CSS和编码良好的CSS,但每页都有各种未使用的CSS?

(具体来说,关于我的问题,有人可以解释我的不安吗?我觉得不舒服,假设图像会在那里并根据数据库中的变量自动生成内联CSS(或基于标题部分的样式标记).)

css version-control onload slowdown

6
推荐指数
1
解决办法
1946
查看次数

python scrapy 在解析时速度变慢

我有一个刮刀机器人,效果很好。但随着时间的推移,刮擦时速度会下降。我添加了concurrent request, download_delay:0'AUTOTHROTTLE_ENABLED':False但结果是一样的。它开始时速度很快,但速度会变慢。我想这与缓存有关,但不知道我是否必须清理缓存,或者为什么会这样?代码如下希望听到评论;

import scrapy
from scrapy.crawler import CrawlerProcess
import pandas as pd
import scrapy_xlsx

itemList=[]
class plateScraper(scrapy.Spider):
    name = 'scrapePlate'
    allowed_domains = ['dvlaregistrations.dvla.gov.uk']
    FEED_EXPORTERS = {'xlsx': 'scrapy_xlsx.XlsxItemExporter'}
    custom_settings = {'FEED_EXPORTERS' :FEED_EXPORTERS,'FEED_FORMAT': 'xlsx','FEED_URI': 'output_r00.xlsx', 'LOG_LEVEL':'INFO','DOWNLOAD_DELAY': 0,'CONCURRENT_ITEMS':300,'CONCURRENT_REQUESTS':30,'AUTOTHROTTLE_ENABLED':False}

    def start_requests(self):
        df=pd.read_excel('data.xlsx')
        columnA_values=df['PLATE']
        for row in columnA_values:
            global  plate_num_xlsx
            plate_num_xlsx=row
            base_url =f"https://dvlaregistrations.dvla.gov.uk/search/results.html?search={plate_num_xlsx}&action=index&pricefrom=0&priceto=&prefixmatches=&currentmatches=&limitprefix=&limitcurrent=&limitauction=&searched=true&openoption=&language=en&prefix2=Search&super=&super_pricefrom=&super_priceto="
            url=base_url
            yield scrapy.Request(url,callback=self.parse, cb_kwargs={'plate_num_xlsx': plate_num_xlsx})

    def parse(self, response, plate_num_xlsx=None):
        plate = response.xpath('//div[@class="resultsstrip"]/a/text()').extract_first()
        price = response.xpath('//div[@class="resultsstrip"]/p/text()').extract_first()

        try:
            a = plate.replace(" ", "").strip()
            if plate_num_xlsx == plate.replace(" ", …
Run Code Online (Sandbox Code Playgroud)

python caching scrapy slowdown

5
推荐指数
1
解决办法
974
查看次数