鯤鵬軟件遷移學習筆記(理論部分加實操作 中)
基于鯤鵬Maven倉進行Maven軟件構建
Maven提供了一個倉庫的功能存放編譯好的Jar包。構建項目時只需要在項目中配置對應的依賴就能自動從倉庫中下載Jar,但Maven中央倉庫中部分Jar存在x86依賴無法在鯤鵬平臺運行。而鯤鵬Maven倉存儲了部分已在鯤鵬平臺上編譯好的Jar,通過配置鯤鵬Maven倉庫構建時就能優先從鯤鵬Maven倉下載。
操作前提 1.遠程登錄ECS2.安裝實驗所需軟件3.軟件依賴分析(Hive)4.遷移軟件包
首先登入華為云(步驟省略),進入華為云控制臺,點擊 “彈性云服務器ECS” 進入ECS管理界面,還是用fxce遠程登入工具進行遠程登入,其他遠程登入工具也可用
注:如果是自己的虛擬機直接輸入wget 命令 是無效的
需要先安裝命令如 linux安裝解壓zip命令: yum install unzip? wget命令安裝: yum -y install wget ?? linux安裝tar命令:yum install -y tar
首先我登入xfce
假如公有地址192.168.1.1 私有地址192.168.1.10
云服務器的彈性公網IP地址可以通過點擊“控制臺”->“服務列表”->“計算”->“彈性云服務器ECS”進入服務器列表,復制公有地址。
接受秘鑰輸入“yes”,回車;
輸入密碼:3(輸入密碼時,命令行窗口不顯示密碼,輸完之后直接鍵入回車)
通過該命令遠程登入華為云彈性服務器ECS或自己的虛擬機服務器
打開xfce終端
LANG=en_US.UTF-8 ssh root@192.169.1.1
安裝OpenJDK軟件
下載軟件包
cd
wget https://sandbox-experiment-resource-north-4.obs.cn-north-4.myhuaweicloud.com/kunpeng-maven/OpenJDK8U-jdk_aarch64_linux_hotspot_8u191b12.tar.gz
解壓軟件包
tar -zxvf OpenJDK8U-jdk_aarch64_linux_hotspot_8u191b12.tar.gz
配置java環境變量
echo 'JAVA_HOME=/root/jdk8u191-b12' >> /etc/profile
echo 'PATH=$JAVA_HOME/bin:$PATH' >> /etc/profile
導入JAVA環境變量配置
source /etc/profile
驗證變量是否有效
java -version
有效如圖
安裝Maven軟件包
cd
下載Maben倉庫軟件包
wget https://sandbox-experiment-resource-north-4.obs.cn-north-4.myhuaweicloud.com/kunpeng-maven/apache-maven-3.5.4-bin.tar.gz
解壓Maven安裝包
tar -zxvf apache-maven-3.5.4-bin.tar.gz
maven環境變量配置
echo 'MAVEN_HOME=/root/apache-maven-3.5.4' >> /etc/profile
echo 'PATH=$PATH:$MAVEN_HOME/bin' >> /etc/profile
maven環境變量配置導入
source /etc/profile
驗證maven倉庫是否安裝成功
mvn -v
安裝成功
添加鯤鵬maven倉
sed ?-i '246a
sed -i '158a
安裝Dependency Advisor
下載Dependency Advisor軟件包
cd
wget https://sandbox-experiment-resource-north-4.obs.cn-north-4.myhuaweicloud.com/kunpeng-maven/Dependency-advisor-Kunpeng-linux-1.1.3.tar.gz
解壓
tar -zxvf Dependency-advisor-Kunpeng-linux-1.1.3.tar.gz
安裝軟件包
cd Dependency-advisor-Kunpeng-linux-1.1.3
./install.sh web
三次回車
等待6分鐘左右
安裝CheckSo工具
下載Checkso安裝包
cd
wget https://sandbox-experiment-resource-north-4.obs.cn-north-4.myhuaweicloud.com/kunpeng-maven/checkSo.zip
安裝CheckSo工具
unzip checkSo.zip ?&& chmod +x checkSo/*.sh
下載軟件依賴分析Hive軟件包
cd
wget -P /opt/depadv/depadmin/ https://sandbox-experiment-resource-north-4.obs.cn-north-4.myhuaweicloud.com/kunpeng-maven/hive_2_6_3_0_235-1.2.1000.2.6.3.0-235.noarch.rpm
軟件包進行依賴檢測命令(依賴檢查結果保存在main.sh腳本所在目錄的JarResult.log文件以及NonJarResult.log文件中。JarResult.log 文件中保存的是Jar包中包含的不兼容鯤鵬處理器的so。格式為:組件包名,jar包名,缺乏arm版本的so庫文件名。NonJarResult.log文件中保存的是非Jar包中不兼容鯤鵬處理器的so)
cd checkSo && ./main.sh /opt/depadv/depadmin/hive_2_6_3_0_235-1.2.1000.2.6.3.0-235.noarch.rpm
查看兩個文件中的內容
cat JarResult.log
cat NonJarResult.log
或者通過網頁版查看,瀏覽器中輸入 https://192.68.1.1:8082并訪問? (一定要是自己的ip地址哦)
初始用戶名depadmin? 初始密碼Admin@9000
輸入需要分析的軟件包hive_2_6_3_0_235-1.2.1000.2.6.3.0-235.noarch.rpm
分析成功的頁面
等待幾分鐘
到遷移軟件包步驟
下載Hive源碼
cd
wget https://sandbox-experiment-resource-north-4.obs.cn-north-4.myhuaweicloud.com/kunpeng-maven/hive-release-HDP-2.6.3.0-235-tag.tar.gz
解壓
tar -zxvf hive-release-HDP-2.6.3.0-235-tag.tar.gz
編譯編碼
cd ?hive-release-HDP-2.6.3.0-235-tag
mvn clean install -Phadoop-2 -DskipTests -Pdist -T 4C
等待幾分鐘即可
用CheckSo工具重新檢測
cd /root/checkSo
rm -f JarResult.log NonJarResult.log
./main.sh /root/hive-release-HDP-2.6.3.0-235-tag/packaging/target/apache-hive-1.2.1000.2.6.3.0-235-bin.tar.gz
查看檢測結果
cat *.log
基于鯤鵬開發套件實現軟件包遷移
Linux軟件包獲取的途徑有操作系統本地源,操作系統遠端源,華為云鯤鵬鏡像等,如果以上途徑無法獲取但有發行X86架構軟件包,可以通過Porting Advisor工具指導用戶將其重構成鯤鵬平臺軟件包,使用Porting Advisor工具將X86平臺Knox rpm軟件包重構成鯤鵬平臺rpm軟件包
操作前提:1.安裝軟件2.rpm遷移(knox)3.重構
首先登入華為云(步驟省略),進入華為云控制臺,點擊 “彈性云服務器ECS” 進入ECS管理界面,還是用fxce遠程登入工具進行遠程登入,其他遠程登入工具也可用
注:如果是自己的虛擬機直接輸入wget 命令 是無效的,需要先安裝命令如 linux安裝解壓zip命令: yum install unzip? wget命令安裝: yum -y install wget ?? linux安裝tar命令:yum install -y tar
首先我登入xfce,用Xfce遠程工具登入軟件,登入華為云服務器
假如公有地址192.168.1.1 私有地址192.168.1.10
LANG=en_us.UTF-8 ssh root@192.68.1.1
安裝rpmbuild(rpmbuild-setuptree命令默認將在當前用戶目錄下創建一個RPM構建跟目錄結構,如果需要改變默認位置,可以修改配置文件:~/.rpmmacros中變量_topdir對應的值即可。)
yum install rpmdevtools
有如圖提示,輸入y即可
rpmdev-setuptree
安裝rpmrebuild
下載rpmrebuild
mkdir rpmrebuild
cd rpmrebuild
wget https://sandbox-experiment-resource-north-4.obs.cn-north-4.myhuaweicloud.com/package-migration/rpmrebuild-2.14.tar.gz
下載完成后,解壓rpmrebuild-2.14.tar.gz文件
tar xvfz rpmrebuild-2.14.tar.gz
安裝
make
make install
安裝完成
安裝DependencyAdviso(華為鯤鵬分析掃描工具是一款可以簡化客戶應用遷移到TaiShan服務器或鯤鵬云服務(KC1,鯤鵬裸機)過程工具。當需要移植軟件時??上扔迷摴ぞ叻治隹梢浦埠鸵浦踩耄摴ぞ呓鉀Q了客戶軟件移植評估分析過程中人工分析投入大,準確率低,整體效率低下的痛點,通過該工具能夠自動分析并輸出指導報告。
在/opt目錄下下載DependencyAdvisor安裝包
cd /opt
wget https://sandbox-experiment-resource-north-4.obs.cn-north-4.myhuaweicloud.com/package-migration/Dependency-advisor-Kunpeng-linux-1.1.3.tar.gz
解壓
tar -zxvf Dependency-advisor-Kunpeng-linux-1.1.3.tar.gz
安裝
cd Dependency-advisor-Kunpeng-linux-1.1.3bash install.sh web
回車三次
安裝完成
安裝PortingAdvisor(PortingAdvisor工具的作用:華為鯤鵬代碼遷移工具是一款可以簡化客戶應用遷移到TaiShan 100/200服務器或鯤鵬云服務(KC1、鯤鵬裸機)的過程的工具。對于源碼移植掃描中心,當客戶有X86平臺上源代碼的軟件要移植到TaiShan 100/200服務器或鯤鵬云服務(KC1、鯤鵬裸機)上時,可用該工具的源碼移植掃描中心自動分析出需修改的代碼內容,并指導用戶如何修改。源碼移植掃描中心解決了用戶代碼兼容性人工排查困難、移植經驗欠缺、反復依賴編譯調試定位等痛點。)
進入 /opt目錄下
cd /opt
下載PortingAdvisor的安裝包
wget https://sandbox-experiment-resource-north-4.obs.cn-north-4.myhuaweicloud.com/package-migration/Porting-advisor-Kunpeng-linux-2.1.1.SPC200.tar.gz
解壓(當不知解壓文件名時可以輸入 ls查看)
tar -zxvf Porting-advisor-Kunpeng-linux-*.tar.gz
安裝PortingAdvisor軟件
cd Porting-advisor-Kunpeng-linux-*
bash install.sh web
回車三次
安裝完成
安裝CheckSo工具
切換到/home目錄下
cd /home
wget https://sandbox-experiment-resource-north-4.obs.cn-north-4.myhuaweicloud.com/package-migration/checkSo.zip
解壓checkSo.zip
unzip checkSo.zip
切換到/checkSo目錄
cd /home/checkSo
添加權限
chmod +x *.sh
下載X86軟件包
切換到/opt/depadv/depadmin/目錄下
cd /opt/depadv/depadmin/
下載軟件包
wget https://sandbox-experiment-resource-north-4.obs.cn-north-4.myhuaweicloud.com/package-migration/knox_3_1_0_0_78-1.0.0.3.1.0.0-78.noarch.rpm
.依賴文件檢查,通過工具檢查當前rpm包是否包含X86依賴文件,以確定是否能在鯤鵬平臺上直接運行
用CheckSo小工具檢測:checkSo檢測的結果,結果在main.sh文件同目錄的JarResult.log文件和NonJarResult.log文件中。jar包檢測結果在JarResult.log中。非jar包中的檢測結果在NonJarResult.log中
cd /home/checkSo
./main.sh /opt/depadv/depadmin/knox_3_1_0_0_78-1.0.0.3.1.0.0-78.noarch.rpm
或使用網頁版檢測結果,登錄“華為鯤鵬分析掃描工具”,在瀏覽器新標簽頁訪問https://192.168.1.1:8082并訪問,(一定要是自己的ip地址哦)
初始用戶名depadmin 密碼Admin@9000
點擊分析
.重構
依賴文件檢查發現存在x86依賴,不能直接在鯤鵬平臺上運行,將x86 rpm重構成鯤鵬平臺rpm
使用PortingAdvisor重構在終端窗口執行如下命令,
將knox_3_1_0_0_78-1.0.0.3.1.0.0-78.noarch.rpm拷貝到/opt/portadv/portadmin下
cd /opt/portadv/portadmin/
cp /opt/depadv/depadmin/knox_3_1_0_0_78-1.0.0.3.1.0.0-78.noarch.rpm .
登錄“華為鯤鵬代碼遷移工具”,在瀏覽器新標簽頁訪問https://192.168.1.1:8084
初始用戶名portadmin和密碼Admin@9000,地址是云服務器的彈性公網IP
進入華為云控制臺,鼠標移動到云桌面瀏覽器頁面中左側菜單欄,點擊“服務列表”->“計算”->“彈性云服務器ECS”,進行查看并復制。注意:瀏覽器可能會提醒地址不安全,請點擊“高級”設置“添加例外”->“獲取證書” ->“確認安全例外”。進入“軟件包構建中心”,如下圖所示,輸入下載的軟件包名稱knox_3_1_0_0_78-1.0.0.3.1.0.0-78.noarch.rpm,點擊“構建軟件包”。
構建完成后在/opt/portadv/portadmin/rpms/目錄下生成knox_3_1_0_0_78-1.0.0.3.1.0.0-78.aarch64.rpm文件
CheckSo依賴檢查通過CheckSo工具檢查生成的rpm文件,以確認沒有殘留X86依賴文件。
切換/home/checkSo目錄下
cd /home/checkSo
rm -f JarResult.log NonJarResult.log
./main.sh /opt/portadv/portadmin/rpms/knox_3_1_0_0_78-1.0.0.3.1.0.0-78.aarch64.rpm
查詢成功
基于鯤鵬開發套件實現c/c++代碼遷移(在鯤鵬云服務器上,完成源碼編譯類軟件的打包、遷移環境配置及軟件遷移等操作)
首先登入華為云(步驟省略),進入華為云控制臺,點擊 “彈性云服務器ECS” 進入ECS管理界面,還是用fxce遠程登入工具進行遠程登入,其他遠程登入工具也可用
注:如果是自己的虛擬機直接輸入wget 命令 是無效的
需要先安裝命令如 linux安裝解壓zip命令: yum install unzip? wget命令安裝: yum -y install wget ?? linux安裝tar命令:yum install -y tar
首先我登入xfce
假如公有地址192.168.1.1 私有地址192.168.1.10
LANG=en_us.UTF-8 ssh root@192.168.1.1??????? (改為自己的ip地址)
代碼掃描工具使用
解壓源碼包,執行生成MakeFile
cd
unzip ?crcutil-42148a6df6986a257ab21c80f8eca2e54544ac4d.zip
cd crcutil-42148a6df6986a257ab21c80f8eca2e54544ac4d
sh autogen.sh
./configure
執行結果
Porting Advisor是華為鯤鵬代碼遷移工具,是一款可以簡化客戶應用遷移到鯤鵬云服務的過程的工具。
cd
/opt/portadv/tools/cmd/bin/porting-advisor -S crcutil-42148a6df6986a257ab21c80f8eca2e54544ac4d --cmd make ?--tos centos7.6
復制框中的路勁
cat /opt/protadv/tools/cmd/report/20200306110344/porting-advisor.csv
crcutil組件遷移
編譯腳本修改 切換到組件目錄下
cd /crcutil-42148a6df6986a257ab21c80f8eca2e54544ac4d
修改crcutil目錄下的編譯腳本autogen.sh
vim autogen.sh
修改crcutil目錄下的編譯腳本autogen.sh,鍵入“:88”回車定位至88行
ARCH_NAME=`arch`
if [ "$ARCH_NAME" == "x86" ]; then
fi
if [ "$ARCH_NAME" == "aarch64" ];then
crcutil_flags="-DCRCUTIL_USE_MM_CRC32=1 -Wall ?-Icode -Iexamples -Itests -march=armv8-a+crc"
修改如下圖
修改 code/platform.h文件 (編譯宏修改)
vim code/platform.h
在管理宏定義的platform.h文件中增加HAVE_AARCH64宏定義:
鍵入“:23”定位到23行,單擊鍵盤“i”進入編輯模式,在23行下方輸入如下代碼:
#if !defined(HAVE_AARCH64)
#if defined(__aarch64__)
#define HAVE_AARCH64 1
#else
#define HAVE_AARCH64 0
#endif ?// defined(__aarch64__)
#endif ?//! defined(HAVE_ARCH64)
vim code/crc32c_sse4.h
添加代碼
HAVE_AARCH64
40行末尾處添加如下代碼
#if HAVE_AARCH64
#define CRC_UPDATE_WORD(crc, value) (crc = _mm_crc32_u64(crc, (value)))
#define CRC_UPDATE_BYTE(crc, value) \
(crc = _mm_crc32_u8(static_cast
#endif
#if !HAVE_AARCH64
vim code/crc32c_sse4.cc
21行末尾處添加代碼
HAVE_AARCH64
再增加__aarch64__編譯宏分支:單擊鍵盤“ESC”退出編輯,鍵入“:309”回車定位,添加如下代碼
#if defined(__aarch64__)
return true;
#endif
鍵入“:22”回車定位至22行,單擊鍵盤“i”進入編輯模式
#if HAVE_AARCH64
namespace crcutil {
__forceinline uint64 _mm_crc32_u64(uint64 crc, uint64 value) {
__asm__("crc32cx %w[c], %w[c], %x[v]":[c]"+r"(crc):[v]"r"(value));
return crc;
}
__forceinline uint32 _mm_crc32_u32(uint32 crc, uint64 value) {
__asm__("crc32cw %w[c], %w[c], %w[v]":[c]"+r"(crc):[v]"r"(value));
return crc;
}
__forceinline uint32 _mm_crc32_u8(uint32 crc, uint8 value) {
__asm__("crc32cb %w[c], %w[c], %w[v]":[c]"+r"(crc):[v]"r"(value));
return crc;
}
} ?// namespace crcutil
#else
ESC”退出編輯,鍵入“:112”回車定位,再次單擊“i”鍵進入編輯,添加代碼
#endif
:wq 回車
vim examples/interface.cc
定位如上
215末尾加入代碼
|| HAVE_AARCH64
255行加入代碼
|| HAVE_AARCH64
271行
#if (CRCUTIL_USE_MM_CRC32 && (HAVE_I386 || HAVE_AMD64 ))|| HAVE_AARCH64
執行命令編譯腳本,產生configure文件
cd /crcutil-42148a6df6986a257ab21c80f8eca2e54544ac4d
sh autogen.sh
執行configure文件,生成MakeFile文件
./configure --prefix=/usr/local/crcutil
安裝
make -j4 install
編譯完成后可通過組件自帶的測試用例,對功能正確性進行確認,編譯后,在crcutil-42148a6df6986a257ab21c80f8eca2e54544ac4d目錄下會生成測試用例(即usage可執行程序)
cd /crcutil-42148a6df6986a257ab21c80f8eca2e54544ac4d
ls
./usage
鯤鵬920執行成功
遷移學習 鯤鵬
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。