建议使用以下浏览器,以获得最佳体验。 IE 9.0+以上版本 Chrome 31+ 谷歌浏览器 Firefox 30+ 火狐浏览器
请选择 进入手机版 | 继续访问电脑版
设置昵称

在此一键设置昵称,即可参与社区互动!

确定
我再想想
选择版块
标签
您还可以添加5个标签
  • 没有搜索到和“关键字”相关的标签
  • 云产品
  • 解决方案
  • 技术领域
  • 通用技术
  • 平台功能
取消

大咖说

发帖: 9粉丝: 12

级别 : 注册会员

发消息 + 关注

发表于2019年12月23日 09:49:40 13529 12
直达本楼层的链接
楼主
显示全部楼层
[干货分享] 【回帖有奖】《云话鲲鹏之大咖来了》第4期:#探索鲲鹏#之“手把手教你在鲲鹏上使用编程语言——Java、Python”

3.png


大家好,鲲鹏论坛《云话鲲鹏之大咖来了》第4期如约在周一与大家见面!


科技前沿,探寻不怠,以责任、权威和专业,


《云话鲲鹏之大咖来了》将从#初识鲲鹏#、#探索鲲鹏#、#玩转鲲鹏#等不同的维度带领大家更深刻的认识和学习鲲鹏!


本期邀请到的大咖仍然是太一,作为华为云鲲鹏解决方案架构师,太一在鲲鹏社区发表了一系列关于鲲鹏的专业技术文章,我们会在接下来的大咖说中逐一为大家推荐!


文末有福利哦


文末有福利哦

本期大咖

胡兴哲.jpg


论坛昵称】 太一


大咖称号 华为云鲲鹏解决方案架构师


技能介绍 丰富的鲲鹏软件调研、鲲鹏迁移、鲲鹏开发和云上开发者生态建设经验



本期推荐文章:在鲲鹏上使用编程语言——Java、Python


#关键词#:初识鲲鹏 、Java、Python


内容简介】


在鲲鹏上使用编程语言——Java

在鲲鹏上使用编程语言——Python



正文开始



在鲲鹏上使用编程语言——Java、Python


之所以把这两种语言放到一起讨论,是因为在某些场景下,他们的行为非常相似。

  • 他们都通过源文件生成机器码

  • 他们都利用vm解释机器码完成程序运行

在绝大多数场景下,Java编译生成的出来的机器码,是由JVM解释运行的;同样python会在运行时将源码编译成机器码,再由python来解释运行,我姑且把他俩都称为解释型语言。

 

理论上,一个代码工程如果完全由JAVA或者python的源码与机器码构成,那么代码本身不关心自己所运行的芯片平台。

 

但仍然有一些常用的天然特性其实是区分平台的,例如java中的NIO在linux上调用epoll,而windows上则调用了IOCP;python的绝大多数数学运算库,scipy、numpy中的核心算法部分都使用C、Fortran编写。而他们恰恰就是Java语言的主要应用场景——web应用和python语言的主要应用场景——AI/数学计算中最至关重要的部分。


JAVA部分

 

Java社区对ARMv8指令集的支持相对完整,这里是JVM的支持体系列表,我们使用JDK 8时,就已经可以支持JVM的全部主要功能了。



x86/64

aarch64

arm(32-bit)

VMs

Client

Yes

No

Yes


Server

Yes

Yes

Yes


Minimal

Yes (32 bit)

Yes, since JDK 12

Yes

JIT

C1

Yes

Yes

Yes


C2

Yes

Yes

Yes


TieredCompilation

Yes

Yes

Yes


Graal JIT (Experimental)

Yes, since JDK 10

Yes, since JDK 11

No

GC

SerialGC

Yes

Yes

Yes


ParallelGC

Yes

Yes

Yes


CMS

Yes, Deprecated

Yes, Deprecated

Yes, Deprecated


G1

Yes

Yes

Yes


ZGC

Experimental

In development

No

Runtime

Container support

Yes

Yes

Yes


AppCDS

Yes

Yes, since JDK 10

Yes, since JDK 10


HugePages

Yes

Yes

Yes


Numa Support

Yes

Yes

No

Serviceability

Java Flight Recorder

Yes

Yes, since JDK 11

Yes, since JDK 11

Table1 JVM端口功能对照表

 

JAVA字节码在执行过程中,JIT会对热点的字节码进行优化编译,编译成机器码后存放在Code Cache区域。如果Code Cache区域满了,那么会导致部分或者全部的代码仅仅通过对字节码逐条解释运行,进而导致JAVA程序性能大减但主机和进程无任何明显的指标异常。由于ARMv8是简单指令集,JAVA for ARM64的机器码的体积会数倍于X86,而且部分版本的JVM有Bug,一旦Code Cache满了,则所有的编译功能都会被停止。

防止CodeCache满,需要调整JVM的一些扩展配置,以之相关的扩展配置项主要有:

XXTieredCompilation      多级编译,OpenJDK 7与OracleJDK7 for ARM64版本默认是true,OpenJDK 7与OracleJDK 7for x86上是false,JDK8都是默认为true。由于默认开启了这个配置,会导致Code Cache中存放有多个层级的机器码,机器码体积倍增。关闭后JVM会只开启C2 Compilor线程进行机器码编译,大大降低Code Cache的消耗。

XXReservedCodeCacheSize     默认值与JDK版本和平台有关,从48M到240M不等。对内存成本考虑不高的情况下,建议可以设置大一些,如512MB,这样可以有效防止因为Code Cache区域内存溢出导致JVM性能下降。


Python部分


python的开源社区比java的要松散许多,社区官方也没有意图收编很多看起来属于基本功能的模块,故而想要厘清python对ARMv8指令集的支持情况其实非常困难,因为仅仅python本体能够支持ARMv8并没有太大意义。粗浅的打个比方,python在如今的代码世界里,更多的是充当胶水,越来越多的功能其实不是由python native的代码编写。如果python生态中的许多功能模块不支持ARMv8,空有一瓶好胶水其实也是没有用的。

 

不过经过实测,使用python2.7.9、python3.5在鲲鹏服务器上运行完整的Openstack应用(Nova、Cinder、Swift、Glance、Neutron、Ceilometer等等),所有功能和测试用例都是正常的,因此可以相对乐观的认为,python2.7.9和python3在鲲鹏上的兼容性是具备的。




来喽来喽,福利,福利,福利,它真的来喽!


【回帖有奖


       看完上述文章,你知道怎么在鲲鹏上使用编程语言Java、Python了吗?纸上得来终觉浅,绝知此事要躬行,鲲鹏社区云端实验室已就位,模拟真实场景,完善的虚拟环境配置搭建,想要直接操作体验的小伙伴们请移步基于华为云鲲鹏弹性云服务器部署Web应用


本期有奖问答题目:你觉得在鲲鹏上开发Java或者Python进行开发跟在X86上有什么异同?

活动时间:2019年12月23日-2020年1月5日

参与方式回答上述问题或者将您在云端实验室中"基于华为云鲲鹏弹性云服务器部署Web应用"操作时遇到的问题、体验、学习笔记等在下方跟帖回复

获奖方式:

1、有效回复均可获得码豆100个(数量有限,先到先得)

2、活动结束后,本期大咖太一将会从所有评论中挑选出3名优质评论,奖励码豆2000个

3、按回复楼层百分比抽取8名用户,奖励HDC大会6折购票资格早鸟票再打6折购票福利,获奖楼层:8%、23%、31%、46%、54%、69%、85%、100%)

活动规则:

1、楼层计算中出现小数的,四舍五入;中奖楼层不符合参与方式的,顺延至下一有效楼层;

2、所有用户均可参与,为杜绝恶意灌水,每个ID连续回复不得超过3楼,总回复不得超过10楼,否则取消获奖资格,奖品顺延至下一有效楼层;

3、中奖用户不重复;

4、码豆发放需要在活动结束后统一发放,需要提供正确的华为云账号名,开奖后请于3日内私信楼主提供个人信息,逾期作废,*注意事项:1.用户需要至少登陆过一次DevCloud会员中心。  2.用户提供的账号名需要是注册时首次填写账号名,后期修改过的无法发放。 3.如果用户是一个租户下的子账号,需要同时提供租户名及用户名;

5、6折购票福利将于活动结束后3个工作日内,在论坛通过私信方式发放,请注意查收论坛提醒和信息。



往期<云话鲲鹏之大咖来了>



《云话鲲鹏之大咖来了》第1期:#初识鲲鹏#之“鲲鹏初学者开始指南”


《云话鲲鹏之大咖来了》第2期:#探索鲲鹏#之“创造一个属于自己鲲鹏开发者环境”


《云话鲲鹏之大咖来了》第3期:#探索鲲鹏#之“在鲲鹏上使用编程语言——C语言



举报
分享

分享文章到朋友圈

分享文章到微博

大咖说

发帖: 9粉丝: 12

级别 : 注册会员

发消息 + 关注

发表于2020年01月06日 16:22:07
直达本楼层的链接
来自 12#
显示全部楼层

获得码豆的小伙伴们,请及时将华为云账号名私信提供给我,逾期作废哦~


中奖楼层 中奖昵称 码豆数
4 andyleung 2000
5 cftang 100
6 小小2018 2000
7 笨蛋快跑 100
8 linzhuofeng 100
9 小王牛又伐 100
点赞 评论 引用 举报

小小2018

发帖: 29粉丝: 6

级别 : 中级会员

发消息 + 关注

发表于2019年12月23日 10:55:57
直达本楼层的链接
沙发
显示全部楼层

之前的留言没有了呢》

评论
大咖说 2019-12-23 10:55 评论

这是新的一期哦,在前几期的留言仍然在的哈~

... 查看全部
小小2018 2019-12-23 10:57 评论

评论 大咖说:哇,得到楼主的回馈了,我一直在关注~~~~

... 查看全部
大咖说 2019-12-23 11:02 评论

评论 小小2018:谢谢亲的关注~

... 查看全部
点赞 评论 引用 举报

技术火炬手

发帖: 89粉丝: 17

级别 : 版主

发消息 + 关注

发表于2019年12月23日 11:17:36
直达本楼层的链接
板凳
显示全部楼层

点赞 评论 引用 举报

122456

发帖: 0粉丝: 0

级别 : 新手上路

发消息 + 关注

发表于2019年12月24日 15:55:46
直达本楼层的链接
地板
显示全部楼层

一直关注

点赞 评论 引用 举报

andyleung

发帖: 641粉丝: 36

级别 : 外部版主

发消息 + 关注

发表于2019年12月24日 17:35:01
直达本楼层的链接
5#
显示全部楼层

你觉得在鲲鹏上开发Java或者Python进行开发跟在X86上有什么异同?


  • 他们都通过源文件生成机器码

  • 他们都利用vm解释机器码完成程序运行

在绝大多数场景下,Java编译生成的出来的机器码,是由JVM解释运行的;同样python会在运行时将源码编译成机器码,再由python来解释运行,我姑且把他俩都称为解释型语言。

 

理论上,一个代码工程如果完全由JAVA或者python的源码与机器码构成,那么代码本身不关心自己所运行的芯片平台。

 

但仍然有一些常用的天然特性其实是区分平台的,例如java中的NIO在linux上调用epoll,而windows上则调用了IOCP;python的绝大多数数学运算库,scipy、numpy中的核心算法部分都使用C、Fortran编写。而他们恰恰就是Java语言的主要应用场景——web应用和python语言的主要应用场景——AI/数学计算中最至关重要的部分。


JAVA部分

 

Java社区对ARMv8指令集的支持相对完整,这里是JVM的支持体系列表,我们使用JDK 8时,就已经可以支持JVM的全部主要功能了。



x86/64

aarch64

arm(32-bit)

VMs

Client

Yes

No

Yes


Server

Yes

Yes

Yes


Minimal

Yes (32 bit)

Yes, since JDK 12

Yes

JIT

C1

Yes

Yes

Yes


C2

Yes

Yes

Yes


TieredCompilation

Yes

Yes

Yes


Graal JIT (Experimental)

Yes, since JDK 10

Yes, since JDK 11

No

GC

SerialGC

Yes

Yes

Yes


ParallelGC

Yes

Yes

Yes


CMS

Yes, Deprecated

Yes, Deprecated

Yes, Deprecated


G1

Yes

Yes

Yes


ZGC

Experimental

In development

No