소프트웨어의 에이징
Software aging![]() |
소프트웨어 엔지니어링에서 소프트웨어의 에이징이란 특정 시간 동안 지속적으로 실행한 후 또는 소프트웨어를 둘러싼 시스템의 지속적인 변경에 의해 소프트웨어가 실패하거나 시스템 장애를 일으키는 경향입니다.소프트웨어의 에이징에는 오래된 소프트웨어가 변화하는 요구나 테크놀로지 플랫폼에 적응할 수 없는 것, 소프트웨어 패치가 추가 오류를 일으키는 경향 등 여러 가지 원인이 있습니다.소프트웨어가 오래되면 목적에 적합하지 않게 되어 결국 정상적으로 기능하지 않게 됩니다.소프트웨어를 재기동하거나 재인스톨 하는 것은, 단기적인 [1]수정으로서 기능하는 경우가 있습니다.소프트웨어의 에이징 사고에 대처하기 위한 예방적 장애 관리 방법은 소프트웨어의 재활성화입니다.이 방법은 일반적으로 소프트웨어 회춘제(SRA)를 통해 구현되는 환경 다양성 기술로 분류할 수 있습니다.
이 현상은 David Parnas에 의해 처음 확인되었으며, 이에 대해 무엇을 해야 할지 탐구한 에세이에서 다음과 같이 나타났습니다.
프로그램도 사람과 마찬가지로 낡아 버립니다.우리는 노화를 막을 수는 없지만 그 원인을 파악하고, 그 영향을 제한하고, 그로 인해 야기된 손상 중 일부를 일시적으로 되돌리고, 소프트웨어가 더 이상 사용할 수 없는 상황에 대비할 수 있습니다."[2]
학술적, 산업적 관점에서 보면 소프트웨어의 노후화 현상이 증가하고 있다.최근의 연구는 그 원인과 [3]결과를 밝히는 데 초점을 맞추고 있다.메모리의 팽창이나 누전, 데이터의 파손이나 릴리스되지 않은 파일락은 소프트웨어 에이징의 특정 원인입니다.
소프트웨어 에이징 프로 액티브 관리
소프트웨어의 에이징
소프트웨어 [4][5]장애는 하드웨어 장애에 비해 계획되지 않은 시스템 장애의 원인이 될 가능성이 높습니다.이는 소프트웨어가 시간이 지남에 따라 데이터 손상, 수치 오류 누적 및 무제한 리소스 소비로 인해 장애율이 증가하기 때문입니다.널리 사용되는 특수한 소프트웨어에서는 문제가 해결되지 않는 복잡한 소프트웨어 때문에 에이징이 발생하기 때문에 문제를 해결하기 위한 일반적인 액션은 재부팅입니다.소프트웨어에 버그가 없는지 완전히 확인하는 것은 거의 불가능합니다.Windows나 MacOS와 같은 고급 소프트웨어도 성능을 향상시키고 버그를 수정하기 위해 지속적인 업데이트를 받아야 합니다.소프트웨어 개발은 장기적인 [6]신뢰성을 확보하기보다는 출시 기한을 준수해야 하는 필요성에 의해 추진되는 경향이 있습니다.노후화에 영향을 받지 않는 소프트웨어를 설계하는 것은 어렵다.일부 사용자가 다른 [7]사용자보다 시스템을 집중적으로 사용하기 때문에 모든 소프트웨어가 동일한 속도로 에이징되는 것은 아닙니다.
회춘
불가피하게 노후화가 소프트웨어 시스템의 장애로 이어지기 때문에 크래시 또는 성능 저하를 방지하기 위해 소프트웨어의 회춘을 적극적으로 사용할 수 있습니다.이 프로 액티브한 기술은 1990년대 [8]AT&T Bell 연구소에서 폴트 톨러런스 소프트웨어에 관한 연구 중에 비용 효율이 뛰어난 솔루션으로 확인되었습니다.소프트웨어 재생은 누적된 오류 상태를 제거하고 시스템 리소스를 해방하는 것으로 동작합니다.예를 들어 운영체제 커널 테이블의 플래시, 가비지 수집의 사용, 내부 데이터 구조의 재초기화, 아마도 가장 잘 알려진 재생 방법은 시스템을 재부팅하는 것입니다.
회춘을 이루기 위한 간단한 기술과 복잡한 기술이 있다.대부분의 사용자에게 익숙한 방법은 하드웨어 또는 소프트웨어 재부팅입니다.보다 기술적인 예는 웹 서버 소프트웨어 Apache의 회춘 방법입니다.Apache는 일정 수의 [9]요청을 처리한 후 프로세스를 죽이고 재생함으로써 한 가지 형태의 회춘을 구현합니다.또 다른 [10]기술은 클라우드 컴퓨팅 환경에서 실행 중인 가상 시스템을 다시 시작하는 것입니다.
다국적 통신회사인 AT&T는 미국에서 대부분의 전화 [11]교환에 대한 과금 데이터를 수집하는 실시간 시스템에서 소프트웨어 재생을 실시했다.
소프트웨어의 회춘 방법을 채용하고 있는 시스템에는,[12] 다음과 같은 것이 있습니다.
- 트랜잭션 처리 시스템
- 웹 서버
- 우주선 시스템
IEEE 소프트웨어 신뢰성 엔지니어링 국제 심포지엄(ISSRE)은 2013년에 제5회 소프트웨어 에이징 및 회춘에 관한 국제 워크숍(woSAR)을 개최하였습니다.포함된 토픽:
- 회춘 메커니즘의 설계, 구현 및 평가
- 회춘 스케줄링 모델링, 분석 및 구현
- 소프트웨어 재생 벤치마크
메모리 누수
C 및 C++와 같은 일부 프로그래밍 언어는 프로그래머가 힙 메모리를 할당할 수 있도록 합니다.게다가 프로그래머는, 메모리가 불필요하게 되었을 때에 메모리를 해방할 필요가 있는 경우가 있습니다.일부 운영 체제(OS)는 프로세스가 완료될 때 가비지 수집을 수행하지 않으므로 메모리를 해제해야 합니다.시간이 지남에 따라 메모리 사용량이 증가하고 최종적으로 컴퓨터의 [13]메모리가 부족해질 수 있습니다.메모리가 부족한 상태에서는, 통상, 스와핑이나 스레싱이 심하기 때문에, 컴퓨터의 동작이 느려집니다.이 경우 응용 프로그램이 느려지거나 응답하지 않을 수 있습니다.컴퓨터의 메모리와 스왑 영역이 모두 부족하면 OS가 자동으로 재부팅되거나 행업할 [14]수 있습니다.
가비지 컬렉터(예: Java)를 사용하는 프로그래밍 언어로 작성된 프로그램은 메모리 누수가 발생하기 쉽습니다.
OS 자체의 중요한 컴포넌트가 메모리 누수의 원인이 될 수 있습니다.예를 들어 마이크로소프트 윈도우즈에서 윈도우즈 탐색기 플러그인의 메모리 사용으로 인해 사용 가능한 메모리가 소진되어 전체 컴퓨터를 사용할 수 없게 될 수 있습니다.재부팅이 [15]필요할 수 있습니다.
실행
회춘을 실행하는 두 가지 방법은 다음과 같습니다.
- 시간 기반 회춘
- 예측에 근거한 회춘
메모리의 팽창
가비지 컬렉션은 자동 메모리 관리의 한 형태로, 사용되지 않는 메모리를 자동으로 복구합니다.예를 들어, 입니다.NET Framework는 NET Framework에서 실행되는 소프트웨어의 메모리 할당 및 릴리스를 관리합니다.그러나 이러한 객체를 자동으로 추적하는 것은 시간이 걸리고 완벽하지 않습니다.
.NET 기반 웹 서비스는 스택, 관리 대상 외, 관리 대상 힙(사용 가능한 공간) 등의 여러 논리 유형의 메모리를 관리합니다.물리 메모리가 가득 차면 OS는 거의 사용하지 않는 부분을 디스크에 쓰기 때문에 다른 애플리케이션(페이징 또는 스왑이라고 하는 프로세스)에 재할당할 수 있습니다.다만, 메모리를 사용할 필요가 있는 경우는, 디스크로부터 새로고침 할 필요가 있습니다.여러 애플리케이션이 큰 요구를 하는 경우 OS는 메인 메모리와 디스크 간에 데이터를 이동하는데 많은 시간을 할애할 수 있습니다.이 프로세스를 디스크 [16]스레싱이라고 합니다.가비지 컬렉터는 사용 중인 할당을 모두 검사해야 하므로 이 스레싱을 더욱 악화시킬 수 있습니다.그 결과 스왑을 광범위하게 하면 가비지 수집 주기가 밀리초에서 수십 초로 길어질 수 있습니다.그 결과, 조작성의 문제가 발생합니다.
「 」를 참조해 주세요.
레퍼런스
- ^ Shereshevsky, M.; Crowell, J.; Cukic, B.; Gandikota, V.; Yan Liu (2003). "Software aging and multifractality of memory resources". 2003 International Conference on Dependable Systems and Networks, 2003. Proceedings. pp. 721–730. doi:10.1109/DSN.2003.1209987. ISBN 978-0-7695-1952-4. S2CID 18697750.
- ^ Parnas, D.L. (1994). "Software aging". Proceedings of 16th International Conference on Software Engineering. pp. 279–287. doi:10.1109/ICSE.1994.296790. ISBN 978-0-8186-5855-6. S2CID 790287.
- ^ Grottke, Michael; Matias, Rivalino; Trivedi, Kishor S. (2008). "The fundamentals of software aging". 2008 IEEE International Conference on Software Reliability Engineering Workshops (ISSRE WKSP). pp. 1–6. doi:10.1109/ISSREW.2008.5355512. ISBN 978-1-4244-3416-9. S2CID 11527276.
- ^ "Oatd: -".
- ^ Garg, S.; Van Moorsel, A.; Vaidyanathan, K.; Trivedi, K.S. (1998). "A methodology for detection and estimation of software aging". Proceedings Ninth International Symposium on Software Reliability Engineering (Cat. No.98TB100257). pp. 283–292. doi:10.1109/ISSRE.1998.730892. ISBN 978-0-8186-8991-8. S2CID 8696313.
- ^ Castelli, V.; Harper, R.E.; Heidelberger, P.; Hunter, S.W.; Trivedi, K.S.; Vaidyanathan, K.; Zeggert, W.P. (2001-03-01). "Proactive management of software aging". IBM Journal of Research and Development. 45 (2): 311–332. CiteSeerX 10.1.1.28.7273. doi:10.1147/rd.452.0311. ISSN 0018-8646.
- ^ Gross, K.C.; Bhardwaj, V.; Bickford, R. (2003). "Proactive detection of software aging mechanisms in performance critical computers". 27th Annual NASA Goddard/IEEE Software Engineering Workshop, 2002. Proceedings. pp. 17–23. doi:10.1109/SEW.2002.1199445. ISBN 978-0-7695-1855-8. S2CID 17167955.
- ^ Cotroneo, D., Natella, R., Pietrantuono, R. 및 Russo, S. 2014.소프트웨어 에이징 및 회춘 연구 조사.ACM J. 긴급 상황.테크놀컴퓨터시스템 10, 1, 제8조 (2014년 1월), 34페이지
- ^ 2007년 K.S. 트리베디 및 Baidyanathan.소프트웨어의 에이징과 재활성화.Wiley Encyclopedia of Computer Science and Engineering.
- ^ Bruneo, Dario; Distefano, Salvatore; Longo, Francesco; Puliafito, Antonio; Scarpa, Marco (2013). "Workload-Based Software Rejuvenation in Cloud Systems". IEEE Transactions on Computers. 62 (6): 1072–1085. doi:10.1109/TC.2013.30. S2CID 23981532.
- ^ Trivedi, Kishor S.; Vaidyanathan, Kalyanaraman (2004-01-01). Reis, Ricardo (ed.). Software Rejuvenation - Modeling and Analysis. IFIP International Federation for Information Processing. Springer US. pp. 151–182. doi:10.1007/1-4020-8159-6_6. ISBN 978-1-4020-8158-3.
- ^ Lei Li; Vaidyanathan, K.; Trivedi, K.S. (2002). "An approach for estimation of software aging in a Web server". Proceedings International Symposium on Empirical Software Engineering. pp. 91–100. doi:10.1109/ISESE.2002.1166929. ISBN 978-0-7695-1796-4. S2CID 8170010.
- ^ "Overview of Memory Leaks". msdn.microsoft.com. Retrieved 2015-11-04.
- ^ Martin Brown; Ken Milberg (16 November 2010). "Optimizing AIX 7 memory performance Part 3, Tuning swap space settings".
- ^ "Preventing Memory Leaks in Windows Applications (Windows)". msdn.microsoft.com. Retrieved 2015-11-04.
- ^ S.R., Chaitra; Basu, Anirban (2012). "Software Rejuvenation in Web Services". International Journal of Computer Applications. 54 (8): 31–35. Bibcode:2012IJCA...54h..31S. doi:10.5120/8589-2340.
추가 정보
- R. Matias Jr.와 P. J. Freitas Filho, "웹 서버에서의 소프트웨어 노후화와 재생에 관한 실험적 연구", 제30회 국제 컴퓨터 소프트웨어 및 애플리케이션 컨퍼런스(COMPSAC'06)의 속행, 제01, 페이지 189–196, 2006.
- M. 그로트케, R. 마티아스 주니어, K. S.Trivedi, "소프트웨어 에이징의 기초", 소프트웨어 에이징과 회춘 워크숍(WoSAR/ISSRE), 2008.
- R. 마티아스 주니어, P. 바베타, K.트리베디, PFreitas Filho "소프트웨어 에이징 실험에 적용되는 성능 저하 가속화 테스트", 신뢰성에 관한 IEEE 트랜잭션 59 (1): 102–114,2010.
- M. Grottke, L. Li, K. Vaidyanathan 및 K.S.Trivedi, "웹 서버에서의 소프트웨어 에이징 분석", IEEE Transactions on Reliability, vol. 55, No. 3, 페이지 411-420, 2006.
- M. 그로트케, KTrivedi, "벌레 퇴치:삭제, 재시도, 리플리케이트, 회춘」, IEEE 컴퓨터 40(2): 107~109, 2007.
- IEEE Xplore에서의 소프트웨어 에이징 및 회춘 워크숍 진행에 관한 기타 문서(WoSAR'08', '10', '11, '12, '13, 14')