4/10/2017

Boot Time 관련 정리

1. Boot Time 관련사항 

OS에서 Boot Time은 최적화를 위해서 중요하며, 보다 빠른 실행을 봐야할 부분이 아닐까 싶다. 이전부터 Linux 기반으로 Boot Time을 줄이기 위해서
기본적으로 Kernel 의 불필요한 기능제거 부터 시작하여 File System의 구성을 최적화하고 정리하고 필요한 부분을 Ramdisk도 이용하기도 했다.


Serial로 Booting 을 보면 시간이 다 기록이 되기때문에 이것으로도 도움이 되지만, Boot TIme을 줄이기 위해서는 본인이 원하는 Service(Program) 실행되어지는 순서변경과
Boot Time의 정확한 측정방법이 파악이 아닐 까 싶다.

  • BootTime 에 관련부분 설명 문서 
  https://bootlin.com/doc/training/boot-time/
  https://elixir.bootlin.com/linux/latest/ident/
  http://www.bootchart.org/samples.html
  https://www.raspberrypi.org/forums/viewtopic.php?t=76606


  • TI Fast Boot Example 
  http://www.makelinux.com/emb/fastboot/
  http://www.makelinux.com/emb/fastboot/omap
  http://www.makelinux.com/emb/fastboot/dm365
  http://e2e.ti.com/support/embedded/linux/f/354/t/51158
  http://www.makelinux.com/emb/fastboot/dm6467
  http://processors.wiki.ti.com/index.php/Sitara_Linux_Training:_Boot_Time_Reduction

  • General Boot Time  관련내용
  1. Kernel Speed up 하는 법 
  2. Boot up Time 측정하는 법 

  http://tree.celinuxforum.org/CelfPubWiki/KoreaTechJamboree3?action=AttachFile&do=get&target=The_Fast_Booting_of_Embedded_Linux.pdf


1.1 Snapshot Booting 

Memory의 정보를 Snapshot 형태로 보관해서 이 부분을 Booting 하는 방식이며, DMA까지 이용한다고 한다.

  • FA linux의 zeroboot 
  http://www.falinux.com/kr/desktop/solution/zeroboot
  http://forum.falinux.com/zbxe/index.php?document_srl=561345&mid=falinux
  http://djji.tistory.com/entry/ZEROBOOT%EC%A0%9C%EB%A1%9C%EB%B6%80%ED%8A%B8

  • Snapshot boot
  http://elinux.org/images/c/c3/Elc2011_kang.pdf
  http://elinux.org/images/3/37/Snapshot-boot-final.pdf


2. Boot Time 분석 

Boo Time에 관련된 기본정보들이 있음

  https://elinux.org/Boot_Time

2.1 Kernel Log 및 Kernel Serial 로 시간분석 

dmesg 및 kernel log로 이부분을 확인이 가능

  https://ahyuo79.blogspot.com/2016/02/kernel-message.html
  https://ahyuo79.blogspot.com/2014/09/kernel-debug.html

  https://elinux.org/Printk_Times

2.2 systemd-analyze 이용 

Linux file system init의 구조가 sysvinit 에서 systemd로 변경이 되어지고 있으며, 혹은 혼합하여 사용중이다. (현재 TI는 혼합해서 사용하고 있기에 이를 적용하기 무리가 있다)
systemd의 분석기능을 제공하고 있으며, dmesg로 boot time을 체크하는 것과는 별도로 진행을 해야 할 것 같다. .

  https://ahyuo79.blogspot.com/2017/04/systemd-analyze.html
  https://wiki.archlinux.org/index.php/Improving_performance/Boot_process

2.3 bootchart/bootchart2 이용

기본적으로 busybox에서 제공을 해주고 있으며, Kernel parameter에서 init=/sbin/bootchartd 를 설정을 해주어야 동작이 가능

  https://ahyuo79.blogspot.com/2017/03/bootchart.html