好得很程序员自学网
  • 首页
  • 后端语言
    • C#
    • PHP
    • Python
    • java
    • Golang
    • ASP.NET
  • 前端开发
    • Angular
    • react框架
    • LayUi开发
    • javascript
    • HTML与HTML5
    • CSS与CSS3
    • jQuery
    • Bootstrap
    • NodeJS
    • Vue与小程序技术
    • Photoshop
  • 数据库技术
    • MSSQL
    • MYSQL
    • Redis
    • MongoDB
    • Oracle
    • PostgreSQL
    • Sqlite
    • 数据库基础
    • 数据库排错
  • CMS系统
    • HDHCMS
    • WordPress
    • Dedecms
    • PhpCms
    • 帝国CMS
    • ThinkPHP
    • Discuz
    • ZBlog
    • ECSHOP
  • 高手进阶
    • Android技术
    • 正则表达式
    • 数据结构与算法
  • 系统运维
    • Windows
    • apache
    • 服务器排错
    • 网站安全
    • nginx
    • linux系统
    • MacOS
  • 学习教程
    • 前端脚本教程
    • HTML与CSS 教程
    • 脚本语言教程
    • 数据库教程
    • 应用系统教程
  • 新技术
  • 编程导航
    • 区块链
    • IT资讯
    • 设计灵感
    • 建站资源
    • 开发团队
    • 程序社区
    • 图标图库
    • 图形动效
    • IDE环境
    • 在线工具
    • 调试测试
    • Node开发
    • 游戏框架
    • CSS库
    • Jquery插件
    • Js插件
    • Web框架
    • 移动端框架
    • 模块管理
    • 开发社区
    • 在线课堂
    • 框架类库
    • 项目托管
    • 云服务

当前位置:首页>CMS系统>Dedecms
<tfoot draggable='sEl'></tfoot>

php绑定cpu php绑定参数sql注入漏洞

很多站长朋友们都不太清楚php绑定cpu,今天小编就来给大家整理php绑定cpu,希望对各位有所帮助,具体内容如下:

本文目录一览: 1、 你好!大神,我现在特别需要解决PHP绑定电脑功能,能详细说一下activeX控件的情况么? 2、 线程程序如何将指定线程绑定到指定的CPU上运行 3、 如何将一个进程(线程)绑定到一个固定的CPU 4、 将进程绑定到指定的CPU上 5、 如何限制php程序的cpu占用率 你好!大神,我现在特别需要解决PHP绑定电脑功能,能详细说一下activeX控件的情况么?

PHP 是服务端语言,,跟activeX 没关系,

你要的效果是绑定网卡地址跟硬盘CPU 什么信息吧,

那个需要用JS 调用个组件,而且只支持IE 并且要修改安全配置

否则就花钱开发浏览器插件,类似于支付宝那种登陆的

线程程序如何将指定线程绑定到指定的CPU上运行

实现方法进程与指定cpu绑定

:SetProcessAffinityMask(GetCurrentProcess(),dwMask);

线程与指定cpu绑定:

SetThreadAffinityMask(GetCurrentThread(),dwMask);dwMask为CPU序号的或运算值:1(0001)

代表只运行在CPU1,2(0010)代表只运行在CPU2,3(0011)代表可以运行在CPU1和CPU2

,以此类推。

设置之前最好判断一下系统有几个CPU:

SYSTEM_INFOSystemInfo;

GetSystemInfo(SystemInfo);CPU个数:SystemInfo.dwNumberOfProcessors

当前启用的CPU序号:

SystemInfo.dwActiveProcessorMask

,Mask representing the set of processors configured into the system. Bit 0 is processor 0;

bit 31 is processor 31.

CPU亲缘性介绍

按照默认设置,当系统将线程分配给处理器时,Windows使用软亲缘性来进行操作。这意味着如果所有其他因素相同的话,它将设法在它上次运行的那个处理器上运行线程。让线程留在单个处理器上,有助于重复使用仍然在处理器的内存高速缓存中的数据。

有一种新的计算机结构,称为NUMA(非统一内存访问),在该结构中,计算机包含若干块插件板,每个插 件板上有4个CPU和它自己的内存区。

当CPU访问的内存是它自己的插件板上的内存时,NUMA系统运行的性能最好。如果CPU需要访问位于另一个插件板上的内 存时,就会产生巨大的性能降低。在这样的环境中,就需要限制来自一个进程中的线程在共享同一个插件版的CPU上运行。为了适应这种计算机结构的需要,Windows允许你设置进程和线程的亲缘性。换句话说,你可以控制哪个CPU能够运行某些线程。这称为硬亲缘性。请注意,子进程可以继承进程的亲缘性。

注意:(1)无论计算机中实际拥有多少个CPU,Windows98及以前系统只使用一个CPU,上述API不被支持。

(2)在大多数环境中,改变线程的亲缘性就会影响调度程序有效地在 各个CPU之间移植线程的能力,而这种能力可以最有效地使用CPU时间。

应用场景举例:

将UI线程限制在一个CPU,将其他实时性要求较高的线程限制在另一个CPU。这样,当UI需要占用大量CPU时间时,就不会拖累其他实时性要求较高的线程的执行

。同样可以将UI线程与一些优先级不高但耗时的异步运算线程设置在不同CPU上,避免UI给人卡顿的感觉。

如何将一个进程(线程)绑定到一个固定的CPU

第一种:linux的shell命令行方式,命令名字为taskset。第二种就是代码实现级别的了,pthread_setaffinity_np和sched_setaffinity函数接口。

第一种方式我已经验证过了,确实可行。同时验证了我心中的疑问:如果将某个线程绑定到某个物理核上之后,在此线程运行结束前,会不会有别的线程被调度到此物理核上执行? 写了一个死循环验证了下,发现绑定之后是不会调度别的线程在此核上运行的!(肉眼观察的,时不时观察下,没发现别的线程在此核上执行;对比了下没有绑定的情况,会发现过段时间此线程就会被调度到别的核心上执行)

此种方式有个问题,就是只有线程运行起来后才会被绑定到某个核上,不够及时。

具体的方式为:

1.首先根据系统的差别运行如下安装命令:

sudo apt-get install util-linux (Debian,Ubuntu or Linux Mint)

sudo yum install util-linux (Fedora,CentOS or RHEL)

2.相关命令的使用:

2.1 使用命令 taskset -p <PID> 来获得此Process的 CPU affinity。

eg: taskset -p 2915 ------> pid 2915's current affinity mask:ff; ff=="1111 1111",没一个1代表一个核,共8个核,能用的核数也为8个核。

2.2 使用命令 taskset -cp <PID> 可获得数字形式的CPU affinity。

eg: taskset -cp 2915 ------> pid 2915's current affinity list: 0--7。

接下来为将进程pin到某个核上的命令;

2.3 taskset -p <COREMASK> <PID>

eg:taskset -p 0x11 9030 ------>pid 9030's current affinity mask: ff , pid 9030's new affinity mask: 11 。意思就是将此进程绑定到了CPU core 0 and 4。

2.4 taskset -cp <CORE-LIST> <PID>

eg:taskset -cp 0,4 9030 ------>the same as below.

With "-c" option, you can specify a list of numeric CPU core IDs separated by commas, or even include ranges (e.g., 0,2,5,6-10).

2.5 taskset <COREMASK> <EXECUTABLE>

eg: taskset 0x1 xxxx ----->"xxxx" represented the name of one program.

另外:参考文章最后的位置说到,绑定到此物理核之后,别的进程(线程)还可以调度到此核上执行,但是没说绑定的这个线程没执行完之前是否会被别的线程挤掉。根据我的观察是不会被挤掉,这我在文章的开头也有提到。

将进程绑定到指定的CPU上

背景:为什么要进程绑定到指定的CPU上?

1) 减少CPU切换开销

CPU固定绑定到主机的指定CPU上,在整个运行期间,不会发生CPU浮动, 减少CPU切换开销 ,提高虚拟机的计算性能。

2) 提供CPU cache的命中率

在多核运行的机器上,每个CPU自身会有缓存,缓存着进程使用的信息,而进程可能会被OS调度到其他CPU上,如此, CPU cache命中率 就低了,当绑定CPU后,程序就会一直在指定的cpu跑,不会由操作系统调度到其他CPU上,性能有一定的提高。

taskset:设置或检索进程的CPU相关性

1) 如果没有taskset命令, 安装 包含taskset命令的util-linux工具集:yum install util-linux

2) 查看进程的CPU亲和力 ,-p选项是一个十六进制数,-cp选项是一个cpu列表,表示相应的cpu核。3的二进制形式是0011,相应的第0位和第1位都是1,表示14795进程只能运行在cpu的第0个核和第1个核。

$ taskset -p 14795

pid 14795's current affinity mask: 3

$ taskset -cp 14795

pid 14795's current affinity list: 0,1

3) 绑定CPU : taskset -cp <CPU IDs>  <Process ID>

$ taskset -cp  0  14795

pid 14795's current affinity list: 0,1

pid 14795's new affinity list: 0

OpenStack K版本引入了许多CPU高级特性功能,不仅支持自定义CPU拓扑功能,支持设置虚拟机CPU的socket、core、threads等,还支持CPU pinning功能,即CPU核绑定,甚至能够配置虚拟机独占物理CPU,虚拟机的vCPU能够固定绑定到物理宿主机的指定pCPU上,在整个运行期间,不会发生CPU浮动,减少CPU切换开销,提高虚拟机的计算性能。

$ lscpu

Architecture:          x86_64

CPU op-mode(s):        32-bit, 64-bit

Byte Order:            Little Endian

CPU(s):                40

On-line CPU(s) list:  0-39

Thread(s) per core:    2

Core(s) per socket:    10

Socket(s):            2

NUMA node(s):          2

Vendor ID:            GenuineIntel

CPU family:            6

Model:                63

Model name:            Intel(R) Xeon(R) CPU E5-2650 v3 @ 2.30GHz

Stepping:              2

CPU MHz:              1201.480

BogoMIPS:              4603.87

Virtualization:        VT-x

L1d cache:            32K

L1i cache:            32K

L2 cache:              256K

L3 cache:              25600K

NUMA node0 CPU(s):    0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38

NUMA node1 CPU(s):    1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39

以上可知,该宿主机有两个CPU(socket),每个CPU 10核(core),每个核可以开启两个 超线程(thread) ,即有40个逻辑CPU。宿主机CPU包含两个NUMA node,其中node0包括0,2,4,...,38,node1包括1,3,5,...,39。

步骤1) 创建支持绑核的主机集合

不是所有的计算节点都支持CPU绑核特性,可以通过主机集合(host aggregate)把支持绑核CPU的主机放到一个集合中。

步骤2)  创建支持绑核的flavor

目前Nova并不支持启动时直接指定主机集合的metadata(hint只支持指定server group),需要通过flavor的扩展属性和主机集合的metadata匹配,将不匹配的主机滤掉,部署到匹配的主机上。flavor支持配置虚拟机的CPU拓扑、QoS、CPU pinning策略、NUMA拓扑以及PCI passthrough等扩展属性。

步骤3) 通过步骤2) 的Flavor创建虚拟机,创建完成到虚机所在物理机上查看虚机绑核情况:

查询方法1) virsh dumpxml 虚机id

<vcpu placement='static'>8</vcpu>

<cputune>

<vcpupin vcpu='0' cpuset='25'/>

<vcpupin vcpu='1' cpuset='5'/>

<vcpupin vcpu='2' cpuset='8'/>

<vcpupin vcpu='3' cpuset='28'/>

<vcpupin vcpu='4' cpuset='9'/>

<vcpupin vcpu='5' cpuset='29'/>

<vcpupin vcpu='6' cpuset='24'/>

<vcpupin vcpu='7' cpuset='4'/>

<emulatorpin cpuset='4-5,8-9,24-25,28-29'/>

</cputune>

查询方法2) 在虚拟机所运行的物理宿主机上执行virsh list找到相应虚机的实例id,然后virsh vcpupin 实例id可以查到该虚拟机所占用的CPU具体核数。

# virsh vcpupin vm46  绑核的虚机

VCPU: CPU Affinity

----------------------------------

  0: 25

  1: 5

  2: 8

  3: 28

  4: 9

  5: 29

  6: 24

  7: 4

# virsh vcpupin vm6 未绑核的虚机

VCPU: CPU Affinity

----------------------------------

  0: 0-39 

  1: 0-39

  2: 0-39 

  3: 0-39

  4: 0-39 

  5: 0-39

  6: 0-39 

  7: 0-39

virsh vcpupin 子命令是KVM自带的指令工具,它可以把vm实例的每个vcpu与宿主机的cpu对应绑定,这种绑定方式粒度更小。

# virsh vcpupin vm4 查看绑定情况

VCPU: CPU Affinity

----------------------------------

  0: 0-23     

  1: 0-23

#默认2个vcpu没有进行绑定,可以在0-23号cpu上切换

# virsh vcpuinfo vm4 查看CPU使用时长

VCPU:          0

CPU:            10  #运行在10号cpu上

State:          running

CPU time:      14.2s

CPU Affinity:  yyyyyyyyyyyyyyyyyyyyyyyy

VCPU:          1

CPU:            8      #运行在8号cpu上

State:          running

CPU time:      6.8s

CPU Affinity:  yyyyyyyyyyyyyyyyyyyyyyyy

# virsh vcpupin vm4 0 3 绑定虚机的第1个CPU到宿主机的第4号cpu上

# virsh vcpupin vm4 1 5 绑定虚机的第2个CPU到宿主机的第6号cpu上

# virsh vcpuinfo vm4

VCPU:          0

CPU:            3

State:          running

CPU time:      14.5s

CPU Affinity:  ---y--------------------

VCPU:          1

CPU:            5

State:          running

CPU time:      7.3s

CPU Affinity:  -----y------------------

# virsh vcpupin vm4

VCPU: CPU Affinity

----------------------------------

  0: 3

  1: 5

三种方法的相同点:都能实现绑核效果

优劣势对比:openstack支持虚机重生虚拟迁移到其他物理主机上,第1种方法在这些操作后绑核还是有效的,但2和3就不会绑核的。此外,第1种方法是自动的,2和3是手动的,可以作为临时补救方法。

在虚拟机上执行高密度计算,测试的Python脚本如下:

# test_compute.py

k = 0

for i in xrange(1, 100000):

    for j in xrange(1, 100000):

        k = k + i * j

使用shell脚本同时跑50个进程,保证CPU满载运行:

for i in `seq 1 50`; do

    python test_compute.py

done

使用sar命令查看宿主机CPU使用情况:

sar -P ALL 1 100

结果如下:

Linux 3.10.0-229.20.1.el7.x86_64 (8409a4dcbe1d11af)    05/10/2018      _x86_64_        (40 CPU)

10:20:14 PM    CPU    %user    %nice  %system  %iowait    %steal    %idle

10:20:15 PM    all    20.48      0.00      0.15      0.03      0.00    79.34

10:20:15 PM      0      0.00      0.00      0.00      0.00      0.00    100.00

10:20:15 PM      1      0.99      0.00      0.00      0.00      0.00    99.01

10:20:15 PM      2      0.00      0.00      0.00      0.00      0.00    100.00

10:20:15 PM      3      0.00      0.00      0.00      0.00      0.00    100.00

10:20:15 PM      4    100.00      0.00      0.00      0.00      0.00      0.00

10:20:15 PM      5    100.00      0.00      0.00      0.00      0.00      0.00

10:20:15 PM      6      0.00      0.00      0.00      0.00      0.00    100.00

10:20:15 PM      7      0.00      0.00      0.00      0.00      0.00    100.00

10:20:15 PM      8    100.00      0.00      0.00      0.00      0.00      0.00

10:20:15 PM      9    100.00      0.00      0.00      0.00      0.00      0.00

10:20:15 PM      10      1.01      0.00      0.00      0.00      0.00    98.99

10:20:15 PM      11      1.00      0.00      0.00      0.00      0.00    99.00

10:20:15 PM      12      0.00      0.00      0.00      0.00      0.00    100.00

10:20:15 PM      13      0.00      0.00      0.99      0.00      0.00    99.01

10:20:15 PM      14      0.99      0.00      0.99      0.00      0.00    98.02

10:20:15 PM      15      1.00      0.00      0.00      0.00      0.00    99.00

10:20:15 PM      16      0.99      0.00      0.99      0.00      0.00    98.02

10:20:15 PM      17      0.00      0.00      0.00      0.00      0.00    100.00

10:20:15 PM      18      0.00      0.00      0.00      0.00      0.00    100.00

10:20:15 PM      19      3.96      0.00      0.99      0.00      0.00    95.05

10:20:15 PM      20      0.00      0.00      0.00      0.00      0.00    100.00

10:20:15 PM      21      0.00      0.00      0.00      0.00      0.00    100.00

10:20:15 PM      22      0.00      0.00      0.00      0.00      0.00    100.00

10:20:15 PM      23      0.00      0.00      0.00      0.00      0.00    100.00

10:20:15 PM      24    100.00      0.00      0.00      0.00      0.00      0.00

10:20:15 PM      25    100.00      0.00      0.00      0.00      0.00      0.00

10:20:15 PM      26      0.00      0.00      0.00      0.00      0.00    100.00

10:20:15 PM      27      0.00      0.00      0.00      0.00      0.00    100.00

10:20:15 PM      28    100.00      0.00      0.00      0.00      0.00      0.00

10:20:15 PM      29    100.00      0.00      0.00      0.00      0.00      0.00

10:20:15 PM      30      2.00      0.00      0.00      0.00      0.00    98.00

10:20:15 PM      31      0.00      0.00      0.00      0.00      0.00    100.00

10:20:15 PM      32      2.97      0.00      0.99      0.00      0.00    96.04

10:20:15 PM      33      0.00      0.00      0.00      0.00      0.00    100.00

10:20:15 PM      34      0.00      0.00      0.00      0.00      0.00    100.00

10:20:15 PM      35      1.00      0.00      0.00      0.00      0.00    99.00

10:20:15 PM      36      0.00      0.00      0.00      0.00      0.00    100.00

10:20:15 PM      37      0.00      0.00      0.00      0.00      0.00    100.00

10:20:15 PM      38      0.00      0.00      0.00      0.00      0.00    100.00

10:20:15 PM      39      0.00      0.00      0.00      0.00      0.00    100.00

从CPU使用情况看宿主机的pCPU 4-5,8-9,24-25,28-29使用率100%,并且整个过程中没有浮动,符合我们的预期结果,说明CPU核绑定成功。

如何限制php程序的cpu占用率

这个不要限制的,php程序占用CPU是很小的,而且运行的快就是这个特点的

关于php绑定cpu的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。

查看更多关于php绑定cpu php绑定参数sql注入漏洞的详细内容...

声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did168796
更新时间:2023-04-11   阅读:29次

上一篇: php范围的表示 php int范围

下一篇:php图片修正 php图片格式转换

相关资讯

最新资料更新

  • 1.织梦CMS提示DedeTag Engine Create File False错误的解决办法总结
  • 2.DEDECMS给图集图片加上自动编号教程
  • 3.dedecms中将系统的data目录迁移到web以外目录
  • 4.织梦DEDECMS缓存文件时间长度的修改方法
  • 5.dedecms内容页分页及分页显示数量控制的方法
  • 6.详解织梦DEDECMS如何防图片被盗链和怎么修改.htaccess
  • 7.织梦DedeCMS栏目列表页URL链接SEO优化的方法
  • 8.dedecms中调用隐藏栏目的方法
  • 9.织梦后台卡死(点击栏目无反应导致浏览器崩溃)的解决方法
  • 10.修改织梦dedecms后台默认admin账号的方法
  • 11.dede:field name=position去除最后一个大于符号
  • 12.dedecms list增加noflag属性的方法 实现让列表标签不调用有推荐属性的文章
  • 13.dedecms5.7首页和列表页模板中动态调用文章浏览次数的方法
  • 14.dedecms模板安装教程及模板相关知识学习
  • 15.DedeCMS arclist标签中实现表格及列表中两列排列
  • 16.DEDE集成百度搜索谷歌搜索站内全站搜索站内按栏目搜索等功能的搜索栏
  • 17.详解如何把dedecms数据生成json
  • 18.织梦登陆后台卡死无法进入的解决方法
  • 19.DEDE登陆后台很慢的原因分析与解决方法
  • 20.DEDE模板中如何运行php脚本和变量在需要操作数据库字段时

CopyRight:2016-2025好得很程序员自学网 备案ICP:湘ICP备09009000号-16 http://www.haodehen.cn
本站资讯不构成任何建议,仅限于个人分享,参考须谨慎!
本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。

网站内容来源于网络分享,如有侵权发邮箱到:kenbest@126.com,收到邮件我们会即时下线处理。
网站框架支持:HDHCMS   51LA统计 百度统计
Copyright © 2018-2025 「好得很程序员自学网」
[ SiteMap ]