Ceph分布式存储系统-性能测试与优化

测试环境

部署方案:整个Ceph Cluster使用4台ECS,均在同一VPC中,结构如图:

cbf59ccbaf2b90a6a2eab8747e9486f8.png

以下是 Ceph 的测试环境,说明如下:

  • Ceph 采用 10.2.10 版本,安装于 CentOS 7.4 版本中;系统为初始安装,没有调优。
  • 每个 OSD 存储服务器都是4核8GB,挂载1块300G高效云盘(非SSD硬盘);操作系统和OSD存储均用同一个磁盘。
[root@node1 ~]# ceph osd tree
ID WEIGHT  TYPE NAME        UP/DOWN REWEIGHT PRIMARY-AFFINITY
-6       0 rack test-bucket
-5       0 rack demo
-1 0.86458 root default
-2 0.28819     host node20 0.28819         osd.0         up  1.00000          1.00000
-3 0.28819     host node31 0.28819         osd.1         up  1.00000          1.00000
-4 0.28819     host node42 0.28819         osd.2         up  1.00000          1.00000
  • 使用 Test pool,此池为 64 个 PGs,数据存三份;
[root@node1 ~]# ceph osd pool create test 64 64
pool 'test' created[root@node1 ~]# ceph osd pool get test size
size: 3[root@node1 ~]# ceph osd pool get test pg_num
pg_num: 64
  • Ceph osd 采用 xfs 文件系统(若使用 brtf 文件系统读写性能将翻 2 倍,但brtf不建议在生产环境使用);
  • Ceph 系统中的Block采用默认安装,为 64K;
  • 性能测试客户端运行在node1上,在同一VPC下使用同一网段访问 Ceph 存贮系统进行数据读写;

本次测试中,发起流量的客户端位于Ceph Cluster中,故网络延时较小,真正生产环境中还需要考虑网络瓶颈。生产环境的网络访问图如下:

4613759a076848948ab7156ddb0b2c72.png

磁盘性能测试

测试磁盘写吞吐量

使用dd命令对磁盘进行标准写测试。使用一下命令行读取和写入文件,记住添加oflag参数以绕过磁盘页面缓存。

node1:

[root@node1 ~]# dd if=/dev/zero of=here bs=1G count=1 oflag=direct
记录了1+0 的读入
记录了1+0 的写出
1073741824字节(1.1 GB)已复制,15.466 秒,69.4 MB/秒

node2:

[root@node2 ~]# dd if=/dev/zero of=here bs=1G count=1 oflag=direct
记录了1+0 的读入
记录了1+0 的写出
1073741824字节(1.1 GB)已复制,13.6518 秒,78.7 MB/秒

node3:

[root@node3 ~]# dd if=/dev/zero of=here bs=1G count=1 oflag=direct
记录了1+0 的读入
记录了1+0 的写出
1073741824字节(1.1 GB)已复制,13.6466 秒,78.7 MB/秒

node4:

[root@node4 ~]# dd if=/dev/zero of=here bs=1G count=1 oflag=direct
记录了1+0 的读入
记录了1+0 的写出
1073741824字节(1.1 GB)已复制,13.6585 秒,78.6 MB/秒

可以看出,除了node1节点外,磁盘吞吐量在 78 MB/s 左右。node1上没有部署osd,最终不作为ceph的读写性能评判参考。

测试磁盘写延迟

使用dd命令,每次写512字节,连续写1万次。

node1:

[root@node1 test]# dd if=/dev/zero of=512 bs=512 count=10000 oflag=direct
记录了10000+0 的读入
记录了10000+0 的写出
5120000字节(5.1 MB)已复制,6.06715 秒,844 kB/秒

node2:

[root@node2 test]# dd if=/dev/zero of=512 bs=512 count=10000 oflag=direct
记录了10000+0 的读入
记录了10000+0 的写出
5120000字节(5.1 MB)已复制,4.12061 秒,1.2 MB/秒

node3:

[root@node3 test]# dd if=/dev/zero of=512 bs=512 count=10000 oflag=direct
记录了10000+0 的读入
记录了10000+0 的写出
5120000字节(5.1 MB)已复制,3.88562 秒,1.3 MB/秒

node4:

[root@node4 test]# dd if=/dev/zero of=512 bs=512 count=10000 oflag=direct
记录了10000+0 的读入
记录了10000+0 的写出
5120000字节(5.1 MB)已复制,3.60598 秒,1.4 MB/秒

平均耗时4秒,平均速度1.3MB/s。

集群网络I/O测试

由于客户端访问都是通过rgw访问各个osd(文件存储服务除外),主要测试rgw节点到各个osd节点的网络性能I/O。

rgw到osd.0

在osd.0节点上使用nc监听17480端口的网络I/O请求:

[root@node2 ~]# nc -v -l -n 17480 > /dev/null
Ncat: Version 6.40 ( http://nmap.org/ncat )
Ncat: Listening on :::17480
Ncat: Listening on 0.0.0.0:17480
Ncat: Connection from 192.168.0.97.
Ncat: Connection from 192.168.0.97:33644.

在rgw节点上发起网络I/O请求:

[root@node2 ~]# time dd if=/dev/zero | nc -v -n 192.168.0.97 17480
Ncat: Version 6.40 ( http://nmap.org/ncat )
Ncat: Connected to 192.168.0.97:17480.
^C记录了121182456+0 的读入
记录了121182455+0 的写出
62045416960字节(62 GB)已复制,413.154 秒,150 MB/秒real    6m53.156s
user    5m54.626s
sys    7m51.485s

网络I/O总流量62GB,耗时413.154秒,平均速度150 MB/秒。

rgw到osd.1

在osd.1节点上使用nc监听17480端口的网络I/O请求:

[root@node3 ~]# nc -v -l -n 17480 > /dev/null
Ncat: Version 6.40 ( http://nmap.org/ncat )
Ncat: Listening on :::17480
Ncat: Listening on 0.0.0.0:17480
Ncat: Connection from 192.168.0.97.
Ncat: Connection from 192.168.0.97:35418.

在rgw节点上发起网络I/O请求:

[root@node2 ~]# time dd if=/dev/zero | nc -v -n 192.168.0.98 17480
Ncat: Version 6.40 ( http://nmap.org/ncat )
Ncat: Connected to 192.168.0.98:17480.
^C记录了30140790+0 的读入
记录了30140789+0 的写出
15432083968字节(15 GB)已复制,111.024 秒,139 MB/秒real    1m51.026s
user    1m21.996s
sys    2m20.039s

网络I/O总流量15GB,耗时111.024秒,平均速度139 MB/秒。

rgw到osd.2

在osd.2节点上使用nc监听17480端口的网络I/O请求:

[root@node4 ~]# nc -v -l -n 17480 > /dev/null
Ncat: Version 6.40 ( http://nmap.org/ncat )
Ncat: Listening on :::17480
Ncat: Listening on 0.0.0.0:17480
Ncat: Connection from 192.168.0.97.
Ncat: Connection from 192.168.0.97:39156.

在rgw节点上发起网络I/O请求:

[root@node2 ~]# time dd if=/dev/zero | nc -v -n 192.168.0.99 17480
Ncat: Version 6.40 ( http://nmap.org/ncat )
Ncat: Connected to 192.168.0.99:17480.
^C记录了34434250+0 的读入
记录了34434249+0 的写出
17630335488字节(18 GB)已复制,112.903 秒,156 MB/秒real    1m52.906s
user    1m23.308s
sys    2m22.487s

网络I/O总流量18GB,耗时112.903秒,平均速度156 MB/秒。

总结:集群内不同节点间,网络I/O平均在150MB/s左右。跟实际情况相符,因为本集群是千兆网卡。

rados集群性能测试

准备工作

    • 查看ceph cluster的osd分布情况:
[root@node1 ~]# ceph osd tree
ID WEIGHT  TYPE NAME        UP/DOWN REWEIGHT PRIMARY-AFFINITY
-6       0 rack test-bucket
-5       0 rack demo
-1 0.86458 root default
-2 0.28819     host node20 0.28819         osd.0         up  1.00000          1.00000
-3 0.28819     host node31 0.28819         osd.1         up  1.00000          1.00000
-4 0.28819     host node42 0.28819         osd.2         up  1.00000          1.00000

可见该cluster部署了3个osd节点,3个都处于up状态(正常work)。

  • 为rados集群性能测试创建一个test pool,此池为 64 个 PGs,数据存三份;
[root@node1 ~]# ceph osd pool create test 64 64
pool 'test' created[root@node1 ~]# ceph osd pool get test size
size: 3[root@node1 ~]# ceph osd pool get test pg_num
pg_num: 64
  • 查看test pool默认配置:
[root@node1 test]# ceph osd dump | grep test
pool 12 'test' replicated size 3 min_size 2 crush_ruleset 0 object_hash rjenkins pg_num 64 pgp_num 64 last_change 37 flags hashpspool stripe_width 0
  • 查看test poll资源占用情况:
[root@node1 test]# rados -p test df
pool name                 KB      objects       clones     degraded      unfound           rd        rd KB           wr        wr KB
test                       0            0            0            0            0            0            0            0            0total used        27044652          192total avail      854232624total space      928512000

写性能测试

  • 测试写性能
[root@node1 ~]# rados bench -p test 60 write --no-cleanup
Maintaining 16 concurrent writes of 4194304 bytes to objects of size 4194304 for up to 60 seconds or 0 objects
Object prefix: benchmark_data_node1_26604sec Cur ops   started  finished  avg MB/s  cur MB/s last lat(s)  avg lat(s)0       0         0         0         0         0           -           01      16        31        15   59.9966        60    0.953952    0.6146472      16        38        22   43.9954        28     1.38736    0.7810393      16        46        30   39.9958        32     1.87801     1.067654      16        61        45   44.9953        60     1.19344     1.231915      16        76        60   47.9949        60    0.993045     1.170226      16        91        75   49.9946        60     1.00303      1.14987      16       106        90   51.4231        60    0.999574     1.136098      16       119       103   51.4945        52     1.00504     1.127799      16       122       106    47.106        12     1.20668     1.1317310      16       122       106   42.3954         0           -     1.1317311      16       125       109    39.632         6      2.8996     1.1821312      16       137       121   40.3289        48     3.90723     1.4527213      16       151       135   41.5339        56     1.10043     1.4733314      16       169       153   43.7096        72    0.927572      1.412915      16       181       165   43.9952        48     1.02879     1.3873916      16       196       180   44.9951        60     1.08398     1.3666517      16       209       193   45.4068        52       1.117     1.3474218      16       212       196   43.5508        12     1.30703      1.346819      16       215       199   41.8902        12     2.79917     1.36874
2018-03-20 17:06:48.745397 min lat: 0.229762 max lat: 4.09713 avg lat: 1.40039sec Cur ops   started  finished  avg MB/s  cur MB/s last lat(s)  avg lat(s)20      16       218       202   40.3956        12     3.49784     1.4003921      16       225       209   39.8051        28     4.18987     1.4885122      16       241       225   40.9046        64     1.00629     1.5314823      16       256       240   41.7345        60     1.18098     1.4986924      16       271       255   42.4953        60      1.0017     1.4731925      16       286       270   43.1952        60     1.00118     1.4506726      16       299       283   43.5337        52     1.19813     1.4334827      16       302       286   42.3657        12     1.30607     1.4321528      16       302       286   40.8527         0           -     1.4321529      16       305       289   39.8577         6     3.00461     1.4484730      16       316       300   39.9956        44     3.73721     1.5402331      16       331       315   40.6407        60     0.97103     1.5452632      16       346       330   41.2455        60    0.999926      1.521433      16       361       345   41.8136        60     1.00411     1.5016934      16       376       360   42.3483        60     1.00089     1.4835535      16       386       370   42.2811        40     1.20272      1.472736      16       389       373   41.4399        12     1.50616     1.4729637      16       392       376   40.6442        12      3.1067       1.48638      16       395       379   39.8903        12     3.90852     1.5051839      16       402       386   39.5854        28     4.12175       1.551
2018-03-20 17:07:08.747628 min lat: 0.229762 max lat: 4.29984 avg lat: 1.56868sec Cur ops   started  finished  avg MB/s  cur MB/s last lat(s)  avg lat(s)40      16       418       402   40.1956        64     1.07659     1.5686841      16       433       417   40.6784        60    0.999955     1.5493942      16       448       432   41.1383        60     1.17664     1.5325643      16       463       447   41.5768        60     1.00297     1.5169544      16       478       462   41.9953        60     1.00466     1.5023445      16       479       463    41.151         4     1.19512     1.5016846      16       482       466   40.5172        12      2.6118     1.5088247      16       485       469   39.9105        12      3.3123     1.5203448      16       493       477   39.7456        32     4.00971     1.5590149      16       508       492   40.1588        60     1.01054     1.5761150      16       523       507   40.5555        60    0.996004     1.5586951      16       538       522   40.9366        60    0.997722     1.5446452      16       553       537   41.3031        60     1.19815     1.5311353      16       568       552   41.6557        60     1.21298     1.5186454      16       572       556   41.1806        16     1.49932     1.5179755      16       572       556   40.4318         0           -     1.5179756      16       575       559   39.9241         6     3.09559     1.5264357      16       583       567    39.785        32     3.99229     1.5592358      16       595       579   39.9266        48     1.37706     1.5795259      16       612       596   40.4022        68     0.89873     1.56855
2018-03-20 17:07:28.749935 min lat: 0.229762 max lat: 4.29984 avg lat: 1.56738sec Cur ops   started  finished  avg MB/s  cur MB/s last lat(s)  avg lat(s)60      16       624       608   40.5288        48     1.65518     1.56738
Total time run:         60.821654
Total writes made:      625
Write size:             4194304
Object size:            4194304
Bandwidth (MB/sec):     41.1038
Stddev Bandwidth:       23.0404
Max bandwidth (MB/sec): 72
Min bandwidth (MB/sec): 0
Average IOPS:           10
Stddev IOPS:            5
Max IOPS:               18
Min IOPS:               0
Average Latency(s):     1.55581
Stddev Latency(s):      0.981606
Max latency(s):         4.29984
Min latency(s):         0.229762

如果加上可选参数 --no-cleanup ,那么测试完之后,不会删除该池里面的数据。里面的数据可以继续用于测试集群的读性能。

db286e02f698d7c70c450985ca596074.png

从以上测试数据可以看出:数据写入时的平均带宽是41MB/sec,最大带宽是72,带宽标准差是23(反应网络稳定情况)。

读性能测试

  • 测试读性能
[root@node1 ~]# rados bench -p test 60 randsec Cur ops   started  finished  avg MB/s  cur MB/s last lat(s)  avg lat(s)0       0         0         0         0         0           -           01      16       101        85   339.935       340    0.270579    0.1470572      16       145       129   257.955       176    0.246583    0.2207843      16       191       175   233.297       184     0.53086    0.2534654      16       236       220   219.968       180   0.0326233    0.2686825      16       281       265   211.971       180    0.528696    0.2868536      16       328       312   207.973       188   0.0203012    0.2952077      16       371       355   202.831       172    0.283736    0.3033288      16       415       399   199.475       176    0.508335     0.307819      16       461       445   197.753       184     0.24398    0.31250310      16       510       494   197.576       196    0.499586     0.3180211      16       556       540    196.34       184    0.259304    0.32070812      16       602       586    195.31       184    0.745053    0.32077713      16       646       630   193.823       176   0.0422189     0.3238614      16       692       676    193.12       184   0.0467997    0.32660715      16       735       719   191.711       172   0.0272729    0.32743216      16       777       761   190.228       168   0.0160831    0.32638117      16       821       805    189.39       176    0.483385    0.33026218      16       865       849   188.645       176   0.0279903    0.33003819      16       913       897    188.82       192    0.237649    0.332631
2018-03-20 17:08:51.231039 min lat: 0.00844047 max lat: 0.964959 avg lat: 0.332994sec Cur ops   started  finished  avg MB/s  cur MB/s last lat(s)  avg lat(s)20      16       962       946   189.178       196   0.0115256    0.33299421      16      1009       993   189.121       188     0.26545    0.33413522      16      1052      1036   188.342       172    0.502163    0.33541123      16      1095      1079   187.631       172    0.191482    0.33595424      16      1140      1124   187.312       180   0.0187187     0.3359325      16      1187      1171   187.339       188   0.0128352    0.33630126      16      1232      1216   187.056       180   0.0260001    0.33688627      16      1278      1262   186.942       184   0.0148474    0.33647828      16      1324      1308   186.836       184    0.723555    0.33735529      16      1367      1351   186.324       172   0.0246515    0.33924730      16      1412      1396   186.113       180   0.0120403    0.33965931      16      1460      1444   186.302       192    0.569969    0.33812932      16      1506      1490   186.229       184   0.0316037    0.34004133      16      1551      1535    186.04       180   0.0273989    0.34023734      16      1596      1580   185.862       180    0.525298    0.34073535      16      1638      1622   185.351       168   0.0101045     0.3405236      16      1686      1670   185.535       192   0.0159173     0.3409137      16      1731      1715   185.385       180    0.986173    0.33993938      16      1775      1759   185.138       176   0.0152587    0.34080639      16      1818      1802     184.8       172    0.216865    0.342337
2018-03-20 17:09:11.233088 min lat: 0.0080755 max lat: 1.20072 avg lat: 0.342772sec Cur ops   started  finished  avg MB/s  cur MB/s last lat(s)  avg lat(s)40      16      1863      1847    184.68       180    0.298863    0.34277241      16      1907      1891   184.468       176    0.539937    0.34194942      16      1950      1934    184.17       172    0.501967    0.34319643      16      1997      1981   184.259       188    0.258521     0.3425544      16      2043      2027   184.253       184   0.0441231    0.34349345      16      2088      2072   184.158       180    0.302963    0.34362146      16      2135      2119   184.241       188   0.0198267     0.3433747      16      2179      2163   184.065       176     0.26388    0.34374448      16      2224      2208    183.98       180    0.274291    0.34387249      16      2268      2252   183.817       176   0.0345847    0.34338350      16      2314      2298    183.82       184   0.0555181    0.34445451      16      2359      2343   183.745       180    0.288888    0.34436252      16      2405      2389   183.749       184    0.280761    0.34484853      16      2447      2431   183.452       168   0.0135715     0.3443854      16      2496      2480   183.684       196    0.259152    0.34488355      15      2542      2527   183.762       188   0.0231959     0.3447356      15      2585      2570   183.552       172    0.235059    0.34515757      16      2627      2611   183.208       164    0.272916      0.345458      16      2674      2658    183.29       188    0.534074    0.34524259      16      2717      2701   183.099       172    0.261746    0.345621
2018-03-20 17:09:31.235266 min lat: 0.0080755 max lat: 1.20072 avg lat: 0.344692sec Cur ops   started  finished  avg MB/s  cur MB/s last lat(s)  avg lat(s)60      16      2765      2749   183.247       192    0.213941    0.344692
Total time run:       60.297422
Total reads made:     2765
Read size:            4194304
Object size:          4194304
Bandwidth (MB/sec):   183.424
Average IOPS:         45
Stddev IOPS:          5
Max IOPS:             85
Min IOPS:             41
Average Latency(s):   0.346804
Max latency(s):       1.20072
Min latency(s):       0.0080755

205077995da5a719d553ccc9a4b1c4aa.png

从以上测试数据可以看出:数据读取时的平均带宽是183MB/sec,平均延时是0.3 sec,平均IOPS是45。

  • 测试数据清除
rados -p test cleanup
  • 删除test池:
[root@node1 ~]# ceph osd pool delete test test --yes-i-really-really-mean-it
pool 'test' removed

结论

针对不同大小的block对Rados、RBD进行了读写性能测试,最终统计结果如下:

block读写顺序读写数据线程数IOPS带宽速度运行时间 s
4K Rados随机读174M161556360.7961MB/s2
顺序读174M161319951.5621MB/s2
随机写174M1614865.80794MB/s30
4K RBD随机读17.6G16104000587.7MB/s30
顺序读2.2G162380074MB/s30
随机写571M16235219MB/s30
顺序写43M163521.4MB/s30
16K Rados随机读615m1613530211.416MB/s2
顺序读615m1610842169.419MB/s3.7
随机写615M16131320.52864MB/s30
16K RBD随机读56G161200001881MB/s30
顺序读10G1625600363MB/s30
随机写1.9G16285465.8MB/s30
顺序写170M163845.7MB/s30
512K Rados随机读8.88G1642182109.11MB/s3
顺序读8.88G1640622031.33MB/s4
随机写8.88G16592296.0093MB/s30
512K RBD随机读54G1637191814.6MB/s30
顺序读56G1628341879.8MB/s30
随机写32G1616491082.5MB/s30
顺序写9G161650303.8KB/s30
  • ceph 针对大块文件的读写性能非常优秀,高达2GB/s。
  • rados读比写高出10倍的速率,适合读数据的高并发场景。
  • pool配置:2个副本比3个副本的性能高出很多,但官方推荐使用3个副本,因为2个不够安全;
  • 若机器配置不算很差(4核8G以上),ceph很容易达到1G带宽的限制阀值,若想继续提升ceph性能,需考虑提升带宽阀值。
  • 设置更多的PG值可以带来更好的负载均衡,但从测试来看,设置较大的PG值并不会提高性能。
  • 将fileStore刷新器设置为false对性能有不错的提升。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/255144.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阅读好书依然是提升自己的高效方法:兼以作者的身份告诉大家如何选择书,以及高效学习的方法...

国内技术网站多如牛毛,质量高的网站也不少,博客园也算一个,各类文章数以百万计,我随便输入一个关键字,比如Spring Cloud,都能看到大量的技术文章和教学视频,我无意贬低技术文章和教学视频的作用…

TCP/IP 协议簇的逐层封装

在使用 TCP 协议的网络程序中,用户数据从产生到从网卡发出去一般要经过如下的逐层封装过程: 从下往上看: 1)链路层通过加固定长度的首部、尾部来封装 IP 数据报(Datagram) 产生以太网帧(Frame)。 其中首部存在对封装数据的…

【开源程序(C++)】获取bing图片并自动设置为电脑桌面背景

众所周知,bing搜索网站首页每日会更新一张图片,张张漂亮(额,也有一些不合我口味的),特别适合用来做电脑壁纸。 我们想要将bing网站背景图片设置为电脑桌面背景的通常做法是: 上网,搜…

UIProgressView 圆角

里面外面都变成圆角 不用图片 直接改变layer 重点是里面外面都是圆角哦 for (UIImageView * imageview in self.progress.subviews) { imageview.layer.cornerRadius 5; imageview.clipsToBounds YES; } 转载于:https://www.cnblogs.com/huoran1120/p/5563991.html

DataTables warning: Requested unknown parameter '0' from the data source for row '0'

问题&#xff1a;DataTables warning: Requested unknown parameter 0 from the data source for row 0 代码&#xff1a; <script type"text/javascript">var data [{"Name":"UpdateBootProfile","Result":"PASS",&…

我与Linux系统的交集

2019独角兽企业重金招聘Python工程师标准>>> 一、初识Linux 第一次知道Linux还是在我刚进大学的时候&#xff0c;从开始聊QQ、玩斗地主的时候起我就是用的Windows&#xff0c;从Windows2000一直到Windows7&#xff0c;当时我已经完全习惯了使用Windows&#xff0c;而…

IP头、TCP头、UDP头详解以及定义

一、MAC帧头定义 /*数据帧定义&#xff0c;头14个字节&#xff0c;尾4个字节*/ typedef struct _MAC_FRAME_HEADER { char m_cDstMacAddress[6]; //目的mac地址 char m_cSrcMacAddress[6]; //源mac地址 short m_cType;      //上一层协议类型&#xff0c;如…

基本 TCP 套接字编程讲解

基于 TCP 的套接字编程的所有客户端和服务器端都是从调用socket 开始&#xff0c;它返回一个套接字描述符。客户端随后调用connect 函数&#xff0c;服务器端则调用 bind、listen 和accept 函数。 使用套接口客户机服务器的的例子 sever.c #include <stdio.h> #include &…

怎样屏蔽微信朋友圈视频?局域网如何禁止员工看朋友圈视频?

上班时间刷刷朋友圈&#xff0c;一眨眼半小时就过去了。不但会影响工作效率&#xff0c;而且朋友圈的视频会占用大量的带宽。所以对企业管理人员来说&#xff0c;很多时候需要禁止员工在工作时段刷朋友圈。但是行政手段要和技术手段配合&#xff0c;才可以发挥真正的作用。本文…

cf414B(dp)

题目链接&#xff1a;http://codeforces.com/problemset/problem/414/B 题意&#xff1a;定义所有元素是其前一个元素的倍数的数列为good sequence&#xff0c;给出 n, 和 k&#xff0c;求1....n组成的长度为k的good sequence 的数目&#xff1b; 思路&#xff1a;dp 用dp[i][j…

增量值编码器、单圈绝对值编码器、多圈绝对值编码器

主流的伺服电机位置反馈元件包括增量值编码器&#xff0c;单圈绝对值编码器&#xff0c;多圈绝对值编码器&#xff0c;旋转变压器等。下面分别介绍&#xff1a; 增量值编码器增量式编码器是将位移转换成周期性的电信号&#xff0c;再把这个电信号转变成计数脉冲&#xff0c;用…

永磁交流伺服电机的工作原理与更换新编码器后的常规零位校正方法

http://wuhuotun.blog.163.com/blog/static/73085450200910655748516/ 永磁交流伺服电机的编码器相位为何要与转子磁极相位对齐 其唯一目的就是要达成矢量控制的目标&#xff0c;使d轴励磁分量和q轴出力分量解耦&#xff0c;令永磁交流伺服电机定子绕组产生的电磁场始终正交于…

理解Java中字符流与字节流的区别

1. 什么是流 Java中的流是对字节序列的抽象&#xff0c;我们可以想象有一个水管&#xff0c;只不过现在流动在水管中的不再是水&#xff0c;而是字节序列。和水流一样&#xff0c;Java中的流也具有一个“流动的方向”&#xff0c;通常可以从中读入一个字节序列的对象被称为输入…

2018/03/25

2019独角兽企业重金招聘Python工程师标准>>> March 25 2018 Sunday Weather&#xff1a;cloudy 1、需求&#xff1a; a0.5 b3 ca*b 求c的值&#xff1a; [rootDasoncheng sbin]# cat a.sh #!/bin/bash a0.5 b3 cecho $a*$b |bc echo $canswer referred&#xff1a;…

elasticsearch分词聚合查询demo

2019独角兽企业重金招聘Python工程师标准>>> 我们在通过elasticsearch查询text类型的字段时&#xff0c;我们使用aggs进行聚合某个text类型field。这时elasticsearch会自动进行分词将分词后的结果进行聚合。获取每一个分词出现在文档的文档个数。注意&#xff1a;是…

Spring实战第七章

一、SpringMVC配置代替方案 1自定DispatcherServlet 按照AbstractAnnotationConfigDispatcherServletInitializer的定义&#xff0c;它会创建DispatcherServlet和ContextLoaderListener。 AbstractAnnotationConfigDispatcherServletInitializer有三个方法是必须要重载的abstra…

C++多线程(一)

C多线程&#xff08;一&#xff09; WIN 多线程API一 简单实例比较简单的代码&#xff0c;创建10个线程&#xff0c;其中使第4个线程在一创建就挂起&#xff0c;等到其他的线程执行的差不多的时候再使第4个线程恢复执行。#include <stdio.h>#include <stdlib.h>#i…

天梯赛2016-L2

L2-001. 紧急救援 作为一个城市的应急救援队伍的负责人&#xff0c;你有一张特殊的全国地图。在地图上显示有多个分散的城市和一些连接城市的快速道路。每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上。当其他城市有紧急求助电话给你的时候&#xff0c;你…

伺服系统控制网络的重要性! 现场总线的重要性! SSCNET运动控制系统与发展趋势

引言&#xff1a;在2010年的时候&#xff0c;在北京的一个数控公司工作。产品采用的是通过运动控制卡发脉冲的方式&#xff0c;控制机床的X、Y、Z轴进行加工。 机床在加工产品的时候&#xff0c;一直存在着精度的问题&#xff0c;例如DMG的机床可以达到0.01的加工精度&#x…

EPSON 自带CCD图像处理包使用举例

EPSON 机器人可以购买CCD图像处理包选项&#xff0c;CCD图像处理包与SPEL语言高度结合&#xff0c;可以非常快的将项目投入应用&#xff0c;举例说明CCD图像处理包与SPEL的联合使用。 EPSON 以视觉序列定义图像处理的一个项目&#xff0c;视觉序列是一组按照特定顺序排列的视觉…