在这篇文章中,我们将为您详细介绍如何在LinuxX86_64中测试IntelHyperThreading的性能的内容。此外,我们还会涉及一些关于c#–GoogleAPIvsGooglePlayvsIn
在这篇文章中,我们将为您详细介绍如何在 Linux X86_64 中测试 Intel HyperThreading 的性能的内容。此外,我们还会涉及一些关于c# – Google API vs Google Play vs Intel x86 vs Android TV vs Wear OS Intel x86系统图像差异、CentOS-5.6-x86_64-bin-DVD 和 CentOS-5.6-x86_64-LiveCD这两种有什么区别、Checking if HyperThreading is enabled or not、gcc编译:/usr/lib/gcc/x86_64-linux-gnu/5/x86_64-linux-gnu/crt1.o:在函数‘_start’中:(.text+0x20):对‘main’未定义引用的知识,以帮助您更全面地了解这个主题。
本文目录一览:- 如何在 Linux X86_64 中测试 Intel HyperThreading 的性能
- c# – Google API vs Google Play vs Intel x86 vs Android TV vs Wear OS Intel x86系统图像差异
- CentOS-5.6-x86_64-bin-DVD 和 CentOS-5.6-x86_64-LiveCD这两种有什么区别
- Checking if HyperThreading is enabled or not
- gcc编译:/usr/lib/gcc/x86_64-linux-gnu/5/x86_64-linux-gnu/crt1.o:在函数‘_start’中:(.text+0x20):对‘main’未定义引用
如何在 Linux X86_64 中测试 Intel HyperThreading 的性能
如何解决如何在 Linux X86_64 中测试 Intel HyperThreading 的性能
我正在尝试弄清楚英特尔 HT 在 Linux X86_64 中的性能影响。
是否有众所周知的工具或现成的代码来进行此测试?
如果没有,我的测试计划如下,
场景一:
线程1:高优先级,运行在CoreN Thread0,休眠1秒。
线程2:中优先级,在CoreN Thread0中运行,增加一个整数计数器。
线程 3 和 4 与线程 1 和 2 相同,但会在 CoreN 线程 1 中运行。
1 秒后,线程 1 和 3 将分别打印线程 2 和 4 增加的计数器。
场景 2:
然后将线程3和4移动到不同的核心,运行1秒再次检查计数器。
期望场景 2 中整数加法的性能优于场景 1。
我的测试计划对检查英特尔 HT 性能影响是否合理?
解决方法
如果您的工作负载本质上是固定数量的线程,而不是物理内核的数量,那么您的测试方式可能是有意义的。因此,您需要将竞争同一内核(上下文切换)的 2 个线程与共享同一物理内核的逻辑内核的两个线程进行比较。
这不正常,大多数多线程工作负载可以将自己划分为可变数量的线程,因此您可以选择与您的内核匹配的线程数量。
通常您会使用 N 个线程执行类似 x265
的操作,其中 N 是您拥有的物理内核数。 (就像 ffmpeg -preset slow -c:v libx265 -x265-params pools=4
表示一个 NUMA 池的 4 核)。理想情况下,在启动时禁用 HT,或者让每个 HT 对的一个内核脱机,因此 Linux 永远不会将两个线程调度到同一个物理内核上。
然后使用 2N 个线程,让所有逻辑核心保持忙碌,因此看看扩展到更多线程是否有助于或损害您的工作负载的吞吐量。 (隐藏停顿与通过竞争缓存占用空间/内存带宽来创建更多停顿。)
在我的测试中,没有打扰离线内核,在带有双通道 DDR4-2666、1080p x265 编码的 i7-6700k Skylake 上,只需 pools=4 vs. pools=8 -preset 慢pools=8 与 pools=4 相比,速度提高了约 20%。
但是 8 个线程使用显着更多的内存带宽(根据 intel_gpu_top -l
显示集成的内存控制器读/写带宽),并且使交互使用明显更加缓慢。 (或者是因为对 L3 缓存的额外竞争,或者是因为没有空闲的逻辑内核来调度任务,或者两者兼而有之。)
或者,如果您想要微基准测试以长时间相互运行两个简单的循环(而不是像 x265 或 BLAS SGEMM 这样的真实程序的指令组合,或者 {{ 1}} 编译或其他),那么是的,您可以编写简单的循环并在 make -j8
下运行它们,以查看现实是否与您从具有前端与后端的代码中预测的内容相匹配(尤其是不同的特定端口)与延迟瓶颈。
请参阅 https://stackoverflow.com/tags/x86/info,尤其是 https://agner.org/optimize/ - Agner 的微架构指南有相当详细的信息,说明 CPU 内核的不同部分如何在超线程之间共享。 (例如,ROB 和存储缓冲区是静态分区的,缓存和执行单元竞争性地共享,前端交替,除非一个线程停止。)
c# – Google API vs Google Play vs Intel x86 vs Android TV vs Wear OS Intel x86系统图像差异
我最近开始使用Visual Studio 2017探索Xamarin.Android.在Android SKD Manager窗口中,我可以看到不同的Android版本,每个版本下都有多个android系统镜像.屏幕截图显示Android 9.0包含所有可用的系统映像:
我想知道我应该下载哪个系统映像,因为我不知道差异.任何人都可以帮助我或参考一些包含每个图像细节的链接?谢谢!
解决方法:
Android手机和平板电脑包含“系统图片”,“Google Api图片”和“Google Play图片”,而非Wear或TV操作系统图片.
您选择的Android手机/平板电脑图片是您的应用需要测试的内容.
系统映像:
此映像仅包含特定API级别的基本/ ASOP版本.这是最基本的版本.即包含的浏览器只是WebView小部件周围的瘦UI外壳.
Google Api图片:
Google Apis includes access to Google Play services.
您可以访问Play服务.例如,您可以针对非Google Play商店设备测试您的应用,但如果您的应用与Facebook,Twitter等分享消息……由于设备上没有Google Play商店,这些应用将无法使用你无法安装它们(我将跳过侧载选项……)
但您可以访问Google服务,因此可以测试“AdMob Lite”之类的内容(AdMod完整版可以包含在您的应用中,因此可以在基本的系统映像上进行测试,但这会增加您的最终APK大小).
Google Play图片:
Google Play in the Play Store column includes the Google Play Store app and access to Google Play services
现在,您的模拟器可以访问Play商店,因此可以安装其他第三方应用,您的应用可以与它们进行互动.因此,如果您要编辑应用程序提供的Microsoft Word文件,您的应用程序可以测试是否安装了Word,如果需要,提示用户安装它,并将.doc文件共享给Word.也许您的应用程序是图像编辑器,您希望其他应用程序与您的应用程序共享其图像,现在可以在模拟器上进行测试,而不是仅在物理设备上进行测试.
Google Play图片是您在OEM /供应商发布的设备上获得的最接近的体验,但在模拟器中.
注意:至于您是选择x86还是x86_64版本的图像,由您自己决定.我个人使用x86_64版本,它们在我的系统上更快.但是,如果您正在安装第三方应用程序,那么如果他们在其应用程序中使用本机共享库,则不是每个人都支持x86_64(也不是x86).
Android电视图片:
这些图像仅用于电视设备的仿真.
> https://developer.android.com/tv/
穿OS图像:
这些图像仅适用于智能手表仿真.
> https://developer.android.com/wear/
CentOS-5.6-x86_64-bin-DVD 和 CentOS-5.6-x86_64-LiveCD这两种有什么区别
CentOS-5.6-x86_64-bin-DVD 和 CentOS-5.6-x86_64-LiveCD这两种有什么区别? 从体积上看livecd的要小很多,而bin-DVD很大,而且是两个iso文件;
我想使用U盘来给服务器装centos; 在网上看有人说把iso安装文件通过Universal-USB-Installer-1.8.7.0.exe刻到U盘即可,但这个工具只能选择一个iso文件,如果是bin-DVD,我该选第一个ISO么?
谢谢了。。。
Checking if HyperThreading is enabled or not
egrep -i "processor|physical id" /proc/cpuinfo
dmidecode -t processor | grep -E ''(Core Count|Thread Count)''
Normally, Thread Count = 2 * ( Core Count)
gcc编译:/usr/lib/gcc/x86_64-linux-gnu/5/x86_64-linux-gnu/crt1.o:在函数‘_start’中:(.text+0x20):对‘main’未定义引用
gcc编译器编译时报错:
/usr/lib/gcc/x86_64-linux-gnu/5/…/…/…/x86_64-linux-gnu/crt1.o:在函数‘_start’中:(.text+0x20):对‘main’未定义的引用
出现这种问题可能是 你对没有main函数的静态库或动态库尝试编译成可执行文件。我在写makefile的时候对依赖库文件漏写了-c参数,导致其尝试编译链接为可执行文件,又因为没有main函数实现,所以报出了这样的错误。
gcc -c参数表示将源文件编译成目标文件,即.o结尾的文件, gcc -c test.c ------> test.o
而gcc不加参数的话,会将编译并尝试链接为可执行文件,而如果你仅仅只是静态库,没有main函数的话,那么就会链接失败,出现这样的错误。
我们今天的关于如何在 Linux X86_64 中测试 Intel HyperThreading 的性能的分享已经告一段落,感谢您的关注,如果您想了解更多关于c# – Google API vs Google Play vs Intel x86 vs Android TV vs Wear OS Intel x86系统图像差异、CentOS-5.6-x86_64-bin-DVD 和 CentOS-5.6-x86_64-LiveCD这两种有什么区别、Checking if HyperThreading is enabled or not、gcc编译:/usr/lib/gcc/x86_64-linux-gnu/5/x86_64-linux-gnu/crt1.o:在函数‘_start’中:(.text+0x20):对‘main’未定义引用的相关信息,请在本站查询。
本文标签: