Skip to content

Commit

Permalink
Galaxy Watch 4
Browse files Browse the repository at this point in the history
  • Loading branch information
huataihuang committed Nov 12, 2023
1 parent b2c3b76 commit ffd6544
Show file tree
Hide file tree
Showing 50 changed files with 898 additions and 5 deletions.
Binary file added source/_static/android/device/galaxy_watch_4.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions source/android/device/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ Android 设备
pixel_4.rst
pixel_4_wireless_charger.rst
pixel_6.rst
samsung_galaxy_watch_4.rst

.. only:: subproject and html

Expand Down
167 changes: 167 additions & 0 deletions source/android/device/samsung_galaxy_watch_4.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,167 @@
.. _samsung_galaxy_watch_4:

=======================
三星Galaxy Watch 4
=======================

选择
======

Pixel Watch一代(放弃)
----------------------

2023年双十一,因为之前使用的 :ref:`apple_watch` 3 和 :ref:`iphone_se1` 暂时不再使用,主力手机改为 :ref:`pixel_4` 。之前曾经心动过的Android手表再次引起了我的关注:

- 最初我想购买 Google Pixel Watch,毕竟谷歌全家桶,既然已经入坑了Google原生Pixel系列手机,何不配套使用狗家的手表呢? 然而初略调研一下,感觉有些不足:

- Pixel系列手表太贵了: 淘宝上的第一代Pixel Watch(全新美国直邮)售价高达1700元,而且二手98新也要 1060元,二手售价甚至和我购买的 :ref:`pixel_4` (全新)一样,实在劝退
- Pixel一代推出时间是2022年,和Pixel 7同时发布,采用了时尚的曲面外观(有点像玩具?),但是明显落后于三星Galaxy Watch一代:

- 处理器使用的是三星用于Galaxy Watch 1~3代的Exynos 9110(对比之下,2021年月11日发布的三星Galaxy Watch 4已经升级到Exynos W920),唯一超过三星Galaxy Watch 4(1.5G内存)的是Pixel Watch一代升级内存到2G
- Pixel Watch是谷歌收购了FitBit之后推出的产品,集成了Fitbit的运动健康(心电图功能),而且没有Apple Watch区域限制,只需要更新系统就可以使用(三星Galaxy Watch 4国行版本阉割了心电图功能,用美版配合软件可以实现)

- Pixel Watch二代在2023年10月4日和Pixel 8一同推出,但是知乎居然没有讨论话题,似乎完全被忽视了

- 外观和一代相同,不过外壳由上一代不锈钢换成了再生铝(外观造型偏向于女性使用的圆形饰品)
- 高通骁龙 W5+ Gen 1 芯片

.. note::

不论是Pixel Watch还是三星Galaxy Watch,都不要购买美版LTE,在国内无法使用eSIM卡(也不支持NFC门禁)

Galaxy Watch 4(我的选择)
--------------------------

.. note::

对比之后,当下最经济实惠的Wear OS智能手表,二手9新只需要328元。还要什么🚴?

2021年8月11日三星发布Galaxy Watch 4

- 由于Google实际上刚刚试水Watch,并且是在三星放弃自研Tizen系统合作开发Wear OS 3.0之后,仅仅推出过两代产品(2023年刚刚推出二代),以Google的鲁莽试行和相对较差的品控,可能需要迭代很多轮才能真正掌握智能手表的研发。所以我尝试寻找经济实惠的二手Wear OS手表: 马上就发现了三星,已经深耕智能手表多年,现在已经迭代到Galaxy Watch 6。本着经济实惠且能够体验Wear OS的思路,我很快选择Galaxy Watch 4:

- Galaxy Watch 4和5这两代完全使用相同的Soc: Exynos W920(三星5nm自研芯片) ,也就是说买早一代和下一代实际差别不大,但是在二手市场,Watch 4售价要低很多。既然我们都是垃圾佬,何不用最经济的方式来体验最有趣的技术
- Galaxy Watch 4已经具备了三合一感应器: PPG, ECG 和 BIA:

- PPG 心率检测
- ECG 心电图检测(国行阉割,到Watch 5国行才提供ECG;不过美版实际可以激活使用)
- BIA 身体成分指标检测(体脂率,骨骼肌,体内水分,脂肪含量等,据说国外有数码博主使用专业设备对比测试,准确率可以达到98%)

- Galaxy Watch 4是三星第一代Wear OS智能手表: 实际上三星和谷歌的合作才促成了Wear OS的爆发,原因是三星的自研芯片加上电源管理特性,才使得谷歌能够推出自己的Wear OS系统

.. note::

国行Galaxy Watch 4阉割了ECG和血压检测功能,请参考 `三星galaxy watch4 classic使用技巧 <https://zhuanlan.zhihu.com/p/411079427>`_ 激活。我购买的是美版,不确定情况,待入手后验证...

Watch 4 vs. Watch 4 Classic vs. Watch 5 vs. Watch 6
-----------------------------------------------------

三星Galaxy Watch 4系列分为普通版本和Classic版本,差别是外观:

- Classic 是不锈钢外壳(普通版是铝合金),并且配备了物理转盘(普通版是虚拟触摸转盘)。
- 但是代价是两倍的价格: 二手9新的Watch 4是 ``328元`` ,而 Watch 4 Classic是 ``679元`` 。(作为目标是体验Wear OS的电子垃圾佬,我显然会选择尽可能低的版本来提高性价比。)

Galaxy Watch 4 和 Galaxy Watch 5 主要差异(核心SoC其实是一样的): (但在淘宝二手上,Watch 5价格达到 ``639元`` ,几乎是 Watch 4 两倍)

- Watch 4 屏幕是康宁大猩猩玻璃DX+ , Watch 5 是蓝宝石玻璃(C Plane)24GPa
- Watch 4 采用蓝牙5.0 , Watch 5 采用蓝牙5.2

.. note::

未来的选择 -- 我非常看好 Google Pixel 8 以及 三星 Galaxy Watch 6 :strike:`Classic` :

- Google Pixel 8将支持原本三星独有的 Samsung DeX功能: 终于可以通过手机获得桌面Android体验了,这也是 :ref:`mobile_work_think` 的实现方案
- 如果没有意外,我购买的二手三星Galaxy Watch 4和 :ref:`pixel_4` 可以使用3年(预计电池老化或硬件损坏),此时二手的Galaxy Watch 6预计会降低到300元左右,Google Pixel 8预计会降低到1000元以下,就是非常好入手升级的时机。

技术规格
===========

.. figure:: ../../_static/android/device/galaxy_watch_4.png

Galaxy Watch4 蓝牙版 44mm

- Exynos W920(三星5nm自研芯片)

- 拥有两个Cortex-A55架构核心,主频1.18GHz
- 处理速度比上一代(Exynos 9110)快20%, GPU速度比上一代快10倍
- Cortex-M55 协处理器: 用于常亮显示,进一步降低功耗

- 高分辨率屏幕: 450x450像素 44mm 1.4英寸AMOLED屏(另一个规格是40mm),支持AOD息屏显示
- RAM: 1.5GB
- 存储: 15GB

.. note::

到2023年发布的Galaxy Watch 6则升级:

- Exynos W930 芯片(双核1.4GHz): 比Exynos W920性能提升了18%
- RAM: 2 GB (提升了33%)
- Super AMOLED 屏幕(由于边框变细,实际显示比上一代大20%),表壳为蓝宝石,峰值亮度可达 2000 尼特,支持 AOD息屏显示(亮度和apple watch ultra相当,适合户外阳光下使用)

- 蓝牙5.0、Wi-Fi、NFC (只有Classic版本有LTE,但是实际在 NFC (国内没有三星pay) 和 LTE(运营商不支持) 在国内都用途有限 :strike:`无用` `有没有人能说说三星watch4在使用中的缺点? - 骑士不死于徒手的回答 - 知乎 <https://www.zhihu.com/question/486166840/answer/2178992291>`_ )

.. note::

2023年11月根据三星中文官网信息 `Galaxy Watch4 蓝牙版 44mm <https://www.samsung.com/cn/watches/galaxy-watch/galaxy-watch4-silver-bluetooth-sm-r870nzsachc/>`_ 可以看到通过 "三星智能卡" 应用可以添加公交卡,支持 ``京津冀互联互通卡`` , ``上海公共交通卡`` 和 ``岭南通`` 三种公交联合卡;此外支持复制门禁卡,可以绑定一张交通卡和一张门禁卡,开启自动选卡功能后,可以自动识别和切换到所刷卡片,无需手动选卡。 (官方说明交通卡添加仅限Android 12以上三星Galaxy手机使用,门禁卡复制仅支持部分种类)

待验证...

- 厚度9.8mm

- 续航: 全天候的智能模式下,支持40小时续航 (但是使用多种功能和不同表盘基本上需要一天一充)
- 快充:

- 30分钟充电可运行10小时,充满大约2小时(横向比较同期的 :ref:`apple_watch` 和其他智能手表,充电速度相对较慢)
- 三星10W无线充电器可以对手表充电 (不知道我购买的二手 :ref:`pixel_4_wireless_charger` 是否支持,待验证)

- 单个芯片集成了3大健康传感器: 光学心率传感器、心电传感器和和生物电阻抗分析 **可检测** :

- **心电图** ECG (类似Apple Watch)
- **血氧** 水平
- **血压** (为确保准确性,每四星期应使用传统的血压袖带校准设备)
- **身体成分测试** : 骨骼肌、基础代谢率、体内水分和体脂百分比(BMI)等关键测量值

.. figure:: ../../_static/android/device/galaxy_watch_4_body.png

Galaxy Watch4 身体成分测试

- 9大传感器:加速度、气压计、陀螺仪传感器、地磁传感器、光传感器、光学心率传感器、心电传感器、电生物阻抗测量传感器、霍尔传感

.. note::

Galaxy Watch 6增加了温度传感器,可测量体温,所以支持女性经期检测

- **睡眠监测** : Galaxy Watch4 可以监测并提供比以往更加详细的睡眠数据图表; 与之兼容的智能手机还会检测 ``鼾声`` (手机需要充满电放在床头,麦克风对着自己,手机会自动把打呼噜的情况录下来进行分析) ; 结合睡眠时的 ``血氧`` 水平,Galaxy Watch4 将会提供睡眠评分,这与 Garmin Venu 2/2S 的新功能类似。

- 运动检测: 支持90+运动模式

- 只支持IP68防水,在海水,热水中中要谨慎,最多泳池用(二手就放弃吧)

- Wear OS特性:

- 无缝对接 Google 的应用生态: Adidas Running、Calm、Strava、Spotify
- One UI Watch 用户界面: 配合兼容手机可以实现手机安装软件同步安装,手机设置同步手表
- Auto Switch 功能,可以在聆听音频(如电话或音乐)时,让耳塞根据使用情况,在手机和手表之间切换音频
- 人机交互: 增加了上下摇晃手腕两次接听电话、转动手腕两次拒绝接听电话(或关闭通知和闹钟)的交互方式(Apple Watch最新一代提供的双指互扣也有类似效果)

软件生态
=========

- 不支持 :ref:`ios` 和鸿蒙
- 支持微信回复功能 `有没有人能说说三星watch4在使用中的缺点? - 超哥的回答 - 知乎 <https://www.zhihu.com/question/486166840/answer/2280382303>`_
- 支持支付宝离线支付,但是要通过支付宝搜索智能设备管理,先充钱后消费,相当于离线钱包(小天才手表模式)
- 手表上方按键长按可以调出bixby,但语音识别效率很低(废柴)
- 内嵌三星自己的运动软件(底层自带软件)支持超过90+运动模式
- 提供了气压、高度和指南针经纬,在户外会非常有用
- Buds控制器: 可以支持三星Galaxy Buds+以后的三星Buds系列真无线耳机进行控制,可以自行调节环境声、降噪模式(仅支持有主动降噪功能的耳机)、触摸阻止等功能
- 相机控制器: 配对三星Galaxy手机后(不确定其他手机是否支持),可以通过手表进行实时取景预览以及拍照,对于合影自拍比较适合

参考
======

- `三星watch4和5哪个值得买?三星watch4和5的区别对比 <https://zhuanlan.zhihu.com/p/576420643>`_
- `Pixel Watch 上手体验:三家混血、二流产物、一等颜值 <https://www.36kr.com/p/2002361952268800>`_
- `最近想买个新智能手表,三星Galaxy Watch4可以不?能给一些建议吗? <https://www.zhihu.com/question/483664087/answer/2106793333>`_
- `如何评价三星 8 月 11 日发布的 Galaxy Watch 4?有什么亮点与特征? <https://www.zhihu.com/question/479085586/answer/2061846895>`_
- `有没有人能说说三星watch4在使用中的缺点? <https://www.zhihu.com/question/486166840>`_
- `2021年8月11日三星发布会|如何评价三星Galaxy Watch4|三星Galaxy Watch4值得买吗 <https://zhuanlan.zhihu.com/p/398805886>`_
151 changes: 151 additions & 0 deletions source/gluster/deploy/centos/deploy_centos7_gluster11_mdadm_raid10.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,151 @@
.. _deploy_centos7_gluster11_mdadm_raid10:

=============================================
在软RAID10上 CentOS 7 部署Gluster 11
=============================================

.. note::

根据 :ref:`deploy_centos7_gluster11` 迭代改进部署方案

之前在项目方案上,改进了 :ref:`deploy_centos7_gluster11` (物理服务器上的12个 ``brick`` 用于同一个volume,但限制了集群的扩容和缩容),基于 :ref:`think_best_practices_for_gluster` ,优化为底层采用 :ref:`linux_software_raid` 来统一存储磁盘,实现一个超大规模的磁盘,然后借助 :ref:`linux_lvm` 来实现灵活的卷划分和管理(实际项目部署还是简化去掉了LVM)。实施方案 :ref:`deploy_centos7_gluster11_lvm_mdadm_raid10` 我其实没有写完(没时间)。

不过,最近发现 :ref:`raid_check` 带来一个困扰,所以我想在虚拟机环境中完全模拟线上环境构建一个GlusterFS集群(唯一的差别是,每块磁盘我只模拟2GB大小),以便完成一系列的测试验证以及监控部署方案。所以有本文记录

准备工作
===========

- :ref:`build_glusterfs_11_for_centos_7`
- :ref:`gluster11_rpm_createrepo`

磁盘存储池构建
================

- :ref:`mdadm_raid10` 完全按照线上环境模拟(每个虚拟机配置12块2GB的虚拟磁盘)

安装和启动服务
===============

- 安装方法同 :ref:`deploy_centos7_gluster6` :

.. literalinclude:: deploy_centos7_gluster11/yum_install_glusterfs-server
:caption: 在CentOS上安装GlusterFS

输出显示将安装如下软件包:

.. literalinclude:: deploy_centos7_gluster11/yum_install_glusterfs-server_output
:caption: 在CentOS上安装GlusterFS输出信息

- 启动GlusterFS管理服务:

.. literalinclude:: deploy_centos7_gluster11/systemctl_enable_glusterd
:caption: 启动和激活GlusterFS管理服务

- 检查 ``glusterd`` 服务状态:

.. literalinclude:: deploy_centos7_gluster11/systemctl_status_glusterd
:caption: 检查GlusterFS管理服务

输出显示服务运行正常:

.. literalinclude:: deploy_centos7_gluster11/systemctl_status_glusterd_output
:caption: 检查GlusterFS管理服务显示运行正常

- 在所有需要的CentOS 7.2服务器节点都安装好上述 ``gluster-server`` 软件包( 使用 :ref:`pssh` ):

.. literalinclude:: deploy_centos7_gluster11/pssh_install_glusterfs-server
:caption: 使用 :ref:`pssh` 批量安装 glusterfs-server

如果简单ssh执行通过如下方式完成:

.. literalinclude:: deploy_centos7_gluster11/ssh_install_glusterfs-server
:caption: 简单使用 :ref:`ssh` 顺序循环安装 glusterfs-server

配置服务
==========

- CentOS 7 默认启用了防火墙(视具体部署),确保服务器打开正确通讯端口:

.. literalinclude:: deploy_centos7_gluster11/centos7_open_ports_glusterfs
:caption: 为GlusterFS打开CentOS防火墙端口

.. note::

- 在采用分布式卷的配置时,需要确保 ``brick`` 数量是 ``replica`` 数量的整数倍。举例,配置 ``replica 3`` ,则对应 ``bricks`` 必须是 ``3`` / ``6`` / ``9`` 依次类推
- 部署案例中,采用了 ``6`` 台服务器,每个服务器 ``12`` 块NVME磁盘: ``12*6`` (3的整数倍)

- 配置gluster配对 **只需要在一台服务器上执行一次** :

.. literalinclude:: deploy_centos7_gluster11/gluster_peer_probe
:language: bash
:caption: 在 **一台** 服务器上 **执行一次** ``gluster peer probe``

- 完成后检查 ``gluster peer`` 状态:

.. literalinclude:: deploy_centos7_gluster11/gluster_peer_status
:caption: 在 **一台** 服务器上执行 ``gluster peer status`` 检查peer是否创建并连接成功

.. literalinclude:: deploy_centos7_gluster11/gluster_peer_status_output
:caption: ``gluster peer status`` 输出显示 ``peer`` 是 ``Connected`` 状态则表明构建成功
:emphasize-lines: 5

创建GlusterFS卷
==================

- 创建一个简单的脚本 ``create_gluster`` ,方便构建 ``replica 3`` 的分布式卷:

.. literalinclude:: deploy_centos7_gluster11/create_gluster
:language: bash
:caption: ``create_gluster`` 脚本,传递卷名作为参数就可以创建 ``replica 3`` 的分布式卷

.. note::

当 ``brick`` 数量是 ``replica`` 的整数倍(2倍或更多倍)时, :ref:`distributed_replicated_glusterfs_volume` 自动创建,能够同时获得高可用和高性能。但是对 ``brick`` 的排列有要求: 先 ``replica`` 后 ``distribute`` 。

所以为了能将数据分布到不同服务器上,我这里采用了特定的排列顺序: ``A:0,B:0,C:0,A:1,B:1,C:1,A:2,B2,C2...`` 以便让 ``replicas 3`` 能够精确分布到不同服务器上。

这种部署方式有利有弊: :ref:`best_practices_for_gluster` 我会详细探讨

- 将脚本加上执行权限::

chmod 755 create_gluster

- 创建卷,举例是 ``backup`` :

.. literalinclude:: deploy_centos7_gluster11/create_gluster_backup_vol
:language: bash
:caption: ``create_gluster`` 脚本创建 ``backup`` 三副本分布式卷

- 如果创建卷错误,通过以下方式删除:

.. literalinclude:: deploy_centos7_gluster11/delete_gluster_backup_vol
:language: bash
:caption: 删除 ``backup`` 卷

.. note::

这里在执行 ``gluster volume`` 的 ``stop`` 和 ``delete`` 命令时,都添加了参数 ``--mode=script`` 是为了避免交互,方便脚本命令执行。日常运维则可以不用这个参数,方便交互确认。

- 完成后检查卷状态:

.. literalinclude:: deploy_centos7_gluster11/gluster_volume_status
:language: bash
:caption: 检查 ``backup`` 卷状态

挂载gluster卷
====================

- 在客户端服务器只需要安装 ``gluster-fuse`` 软件包:

.. literalinclude:: deploy_centos7_gluster11/install_gluster-fuse
:caption: 安装GlusterFS客户端 ``gluster-fuse``

- 修改 ``/etc/fstab`` 添加如下内容:

.. literalinclude:: deploy_centos7_gluster11/gluster_fuse_fstab
:caption: GlusterFS客户端的 ``/etc/fstab``

- 挂载存储卷:

.. literalinclude:: deploy_centos7_gluster11/mount_gluster
:caption: 挂载GlusterFS卷
1 change: 1 addition & 0 deletions source/gluster/deploy/centos/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ CentOS平台GlusterFS部署
gluster11_rpm_createrepo.rst
deploy_centos7_gluster11.rst
deploy_centos7_gluster11_lvm_mdadm_raid10.rst
deploy_centos7_gluster11_mdadm_raid10.rst
add_centos7_gluster11_server.rst

.. only:: subproject and html
Expand Down
45 changes: 45 additions & 0 deletions source/kernel/process/get_process_start_time.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
.. _get_process_start_time:

=========================
获取进程启动时间
=========================

``ps`` 检查启动时间
====================

使用 :ref:`ps` 命令可以轻易获得进程启动时间:

- 检查进程启动时间 ``lstart`` :

.. literalinclude:: utils/ps/ps_lstart
:caption: 检查进程启动时间,例如 ``qemu-system-x86``

输出显示案例类似如下:

.. literalinclude:: utils/ps/ps_lstart_output
:caption: 检查进程启动时间,例如 ``qemu-system-x86`` 可以看到详细的启动时间

.. note::

在 ``ps`` 检查进程启动时间的 ``field`` 格式参数可以有3种:

- ``start`` 启动时间类似 ``09:46:10`` ,但是超过24小时的进程会显示为日期,类似 ``Aug 31``
- ``stime`` 启动时间类似 ``09:10`` ,但是超过24小时的进程也是显示为日期,类似 ``Aug31``
- ``lstart`` 启动时间最详尽和标准化,非常方便对比检查,类似 ``Thu Aug 31 23:58:01 2023`` 强烈推荐

从 ``stat`` 获取进程启动时间
==============================

我在生产实践中遇到过一种异常情况,OS异常导致 ``ps`` 命令无法执行。这时候可以考虑从 ``/proc`` 目录下进程对应pid的 ``stat`` 来获取信息:

.. literalinclude:: get_process_start_time/process_stat
:caption: 从进程的 ``procfs`` 的 ``stat`` 来获得启动时间

.. note::

从 ``stat`` 文件中读取的数值是从系统启动到进程启动启动之间的 ``clock ticks`` ,上述脚本命令做了转换

参考
======

- `How to get the start time of a long-running Linux process? <https://stackoverflow.com/questions/5731234/how-to-get-the-start-time-of-a-long-running-linux-process>`_
3 changes: 3 additions & 0 deletions source/kernel/process/get_process_start_time/process_stat
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# 这里 <PID> 替换成进程pid
awk -v ticks="$(getconf CLK_TCK)" 'NR==1 { now=$1; next }
END { print strftime("%c", systime() - (now-($20/ticks))) }' /proc/uptime RS=')' /proc/<PID>/stat
1 change: 1 addition & 0 deletions source/kernel/process/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

process_vs_thread.rst
thread_count.rst
get_process_start_time.rst
utils/index

.. only:: subproject and html
Expand Down

0 comments on commit ffd6544

Please sign in to comment.