KR20200135005A - 파일 시스템 및 이를 이용한 단일 파일 쓰기 병렬화 방법 - Google Patents
파일 시스템 및 이를 이용한 단일 파일 쓰기 병렬화 방법 Download PDFInfo
- Publication number
- KR20200135005A KR20200135005A KR1020190061340A KR20190061340A KR20200135005A KR 20200135005 A KR20200135005 A KR 20200135005A KR 1020190061340 A KR1020190061340 A KR 1020190061340A KR 20190061340 A KR20190061340 A KR 20190061340A KR 20200135005 A KR20200135005 A KR 20200135005A
- Authority
- KR
- South Korea
- Prior art keywords
- thread
- data
- file
- information
- block
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 50
- 230000006870 function Effects 0.000 description 67
- 238000010586 diagram Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000011084 recovery Methods 0.000 description 3
- 230000006872 improvement Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 230000002401 inhibitory effect Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1858—Parallel file systems, i.e. file systems supporting multiple processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/176—Support for shared access to files; File sharing support
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
도 2는 본 발명의 실시예에 따른 범위 락을 이용한 파일의 접근을 나타낸 예시도이다.
도 3은 본 발명의 실시예에 따른 파일 시스템의 구조도이다.
도 4는 본 발명의 실시예에 따른 제어 모듈의 구조도이다.
도 5는 본 발명의 실시예에 따른 단일 파일 쓰기 병렬화 방법에 대한 흐름도이다.
도 6은 본 발명의 실시예에 따른 평균 지연 시간을 측정한 실험치의 예시도이다.
도 7은 본 발명의 실시예에 따른 인터벌 트리의 예시도이다.
CPU | Intel Xeon E7-8870 v2 2.3GHz*15cores) * 8 |
RAM | 740GB |
SSD | Intel Optane SSD 900p. Intel 750 SSD |
Kernel | Linux 4.14.11 |
OS | Ubuntu 16.04 |
Claims (12)
- 파일 시스템이 복수의 스레드가 단일 파일에 데이터를 쓰도록 제어하는 방법으로서,
데이터 쓰기 함수를 호출한 함수 호출 스레드에 대하여, 데이터를 쓸 파일의 파일 정보, 상기 파일을 구성하는 복수의 블록들 중 데이터를 쓰기 시작할 블록 시작점 정보, 및 데이터 길이 정보를 포함하는 스레드 정보를 확인하는 단계,
상기 파일 정보를 토대로 동일한 파일에 데이터를 쓰고 있는 이전 스레드가 존재하는지 확인하는 단계,
상기 이전 스레드가 존재하면, 상기 함수 호출 스레드의 블록 시작점 정보와 데이터 길이 정보를 토대로, 상기 이전 스레드의 블록들과 중복되는 블록이 있는지 확인하는 단계, 그리고
상기 함수 호출 스레드가 상기 이전 스레드의 블록들과 서로 다른 블록에 데이터를 쓰고자 한다면, 상기 파일에 데이터를 쓰도록 상기 함수 호출 스레드를 제어하는 단계
를 포함하는 단일 파일 데이터 쓰기 병렬화 방법. - 제1항에 있어서,
상기 스레드 정보를 확인하는 단계는,
상기 블록 시작점 정보와 데이터 길이 정보를 토대로, 상기 함수 호출 스레드에 대한 노드들 생성하는 단계, 그리고
상기 생성한 노드를 상기 이전 스레드에 대한 노드가 삽입되어 있는 인터벌 트리에 삽입하고, 상기 인터벌 트리를 갱신하는 단계
를 포함하는 단일 파일 데이터 쓰기 병렬화 방법. - 제2항에 있어서,
상기 중복되는 블록이 있는지 확인하는 단계는,
상기 이전 스레드의 스레드 정보에 포함된 블록 시작점 정보와 데이터 길이 정보를 토대로 생성된 노드와 상기 함수 호출 스레드의 노드를 토대로, 겹쳐지는 블록 구간이 있는지 확인하는 단일 파일 데이터 쓰기 병렬화 방법. - 상기 중복되는 블록이 있는지 확인하는 단계는,
상기 이전 스레드의 블록들 중 일부 또는 전체 블록들과 중복되는 블록이 존재하면, 상기 이전 스레드에 의해 선점된 블록들에 락을 설정하는 단계
를 포함하는 단일 파일 데이터 쓰기 병렬화 방법. - 제4항에 있어서,
상기 함수 호출 스레드를 제어하는 단계는,
상기 함수 호출 스레드의 레퍼런스 카운터를 설정하는 단계
를 더 포함하고,
상기 레퍼런스 카운터는 동일한 블록에 데이터를 쓰고자 하는 스레드들의 수로 설정되는 단일 파일 데이터 쓰기 병렬화 방법. - 제5항에 있어서,
상기 함수 호출 스레드를 제어하는 단계 이후에,
상기 동일한 파일에 데이터를 쓰고 있는 복수의 스레드들 중 어느 하나의 스레드가 호출한 언락 함수를 인지하는 단계, 그리고
상기 언락 함수를 호출한 스레드에 대응하는 노드를 상기 인터벌 트리로부터 삭제하는 단계
를 포함하는 단일 파일 데이터 쓰기 병렬화 방법. - 제6항에 있어서,
상기 삭제하는 단계 이후에,
상기 인터벌 트리에서 삭제된 스레드에 의해, 데이터 쓰기를 대기하고 있는 스레드가 존재하는지 확인하는 단계, 그리고
데이터 쓰기를 대기하는 스레드가 있으면, 상기 대기중인 스레드가 파일에 데이터 쓰기를 실행하도록 제어하는 단계
를 포함하는 단일 파일 데이터 쓰기 병렬화 방법. - 파일 시스템으로서,
데이터 쓰기 함수를 호출한 복수의 스레드들이 각각 쓰기를 실행한 데이터를 블록 단위로 분할하여 저장하는 파일 시스템 모듈, 그리고
제1 스레드가 상기 데이터 쓰기 함수를 호출하면, 상기 제1 스레드에 대한 스레드 정보를 확인하고, 확인한 스레드 정보를 토대로 상기 제1 스레드가 데이터를 쓸 블록들 중 적어도 하나의 블록이 데이터를 쓰고 있는 제2 스레드에 의해 사용되고 있으면 상기 제2 스레드가 사용하고 있는 블록에 락을 설정하며, 상기 제1 스레드가 데이터를 쓸 블록들이 상기 제2 스레드에 의해 사용되고 있지 않으면 상기 제1 스레드가 상기 파일 시스템 모듈에 데이터를 쓰도록 제어하는 제어 모듈
을 포함하는 파일 시스템. - 제8항에 있어서,
상기 제어 모듈은,
상기 제1 스레드로부터 호출된 함수가 상기 데이터 쓰기 함수 또는 언락 함수 중 어느 하나의 함수인지 확인하는 호출 함수 확인 모듈,
상기 데이터 쓰기 함수가 호출되면, 상기 제1 스레드가 생성한 상기 스레드 정보를 토대로 인터벌 트리에 삽입할 노드를 생성하는 노드 생성 모듈,
상기 인터벌 트리 생성 모듈이 생성한 인터벌 트리를 토대로 상기 제1 스레드가 데이터를 쓸 블록들이 상기 제2 스레드에 의해 사용되고 있는지 확인하는 스레드 정보 확인 모듈, 그리고
상기 스레드 정보 확인 모듈이 상기 제1 스레드가 데이터를 쓸 블록들이 상기 제2 스레드에 의해 사용되고 있는 것으로 확인하면, 상기 제2 스레드가 사용하는 블록들에 락을 설정하는 범위 락 설정 모듈
을 포함하는 파일 시스템. - 제9항에 있어서,
상기 스레드 정보는 상기 제1 스레드가 데이터를 쓸 파일의 파일 정보, 상기 파일을 구성하는 복수의 블록들 중 데이터를 쓰기 시작할 블록 시작점 정보, 및 데이터 길이 정보를 포함하고,
상기 노드 생성 모듈은,
상기 블록 시작점 정보와 데이터 길이 정보를 토대로 상기 제1 스레드에 대한 블록 시작점과 블록 끝점을 포함하는 노드를 생성하는 파일 시스템. - 제10항에 있어서,
상기 범위 락 설정 모듈은,
상기 제1 스레드가 데이터를 쓸 블록들이 상기 제2 스레드에 의해 사용되고 있으면, 상기 제1 스레드의 레퍼런스 카운터를 상기 블록들을 사용할 스레드의 수만큼 설정하는 파일 시스템. - 제10항에 있어서,
상기 노드 생성 모듈이 생성한 노드를 상기 인터벌 트리에 삽입하는 인터벌 트리 생성 모듈
을 더 포함하는 파일 시스템.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190061340A KR102251869B1 (ko) | 2019-05-24 | 2019-05-24 | 파일 시스템 및 이를 이용한 단일 파일 쓰기 병렬화 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190061340A KR102251869B1 (ko) | 2019-05-24 | 2019-05-24 | 파일 시스템 및 이를 이용한 단일 파일 쓰기 병렬화 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20200135005A true KR20200135005A (ko) | 2020-12-02 |
KR102251869B1 KR102251869B1 (ko) | 2021-05-12 |
Family
ID=73791837
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020190061340A Active KR102251869B1 (ko) | 2019-05-24 | 2019-05-24 | 파일 시스템 및 이를 이용한 단일 파일 쓰기 병렬화 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102251869B1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115659367A (zh) * | 2022-10-24 | 2023-01-31 | 青岛海信移动通信技术股份有限公司 | 一种数据处理方法、装置、终端设备及介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20110048486A (ko) * | 2008-04-06 | 2011-05-11 | 퓨전-아이오, 인크. | 멀티-프로세서/멀티-스레드 환경에서 저장 요청을 조정하는 장치, 시스템 및 방법 |
KR101257848B1 (ko) | 2005-07-13 | 2013-04-24 | 삼성전자주식회사 | 복합 메모리를 구비하는 데이터 저장 시스템 및 그 동작방법 |
KR20140147318A (ko) * | 2013-06-19 | 2014-12-30 | 한국전자통신연구원 | 멀티코어용 병렬 프로그램의 동시성 오류 검출 장치 및 방법 |
KR20150067722A (ko) * | 2013-12-10 | 2015-06-18 | 에이알엠 리미티드 | 멀티 스레드 데이터 처리장치에서의 스레드 스케줄링 구성 |
KR101638136B1 (ko) * | 2015-05-14 | 2016-07-08 | 주식회사 티맥스 소프트 | 멀티 스레드 구조에서 작업 분배 시 스레드 간 락 경쟁을 최소화하는 방법 및 이를 사용한 장치 |
US9792294B2 (en) | 2014-07-02 | 2017-10-17 | Panzura, Inc | Using byte-range locks to manage multiple concurrent accesses to a file in a distributed filesystem |
-
2019
- 2019-05-24 KR KR1020190061340A patent/KR102251869B1/ko active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101257848B1 (ko) | 2005-07-13 | 2013-04-24 | 삼성전자주식회사 | 복합 메모리를 구비하는 데이터 저장 시스템 및 그 동작방법 |
KR20110048486A (ko) * | 2008-04-06 | 2011-05-11 | 퓨전-아이오, 인크. | 멀티-프로세서/멀티-스레드 환경에서 저장 요청을 조정하는 장치, 시스템 및 방법 |
KR20140147318A (ko) * | 2013-06-19 | 2014-12-30 | 한국전자통신연구원 | 멀티코어용 병렬 프로그램의 동시성 오류 검출 장치 및 방법 |
KR20150067722A (ko) * | 2013-12-10 | 2015-06-18 | 에이알엠 리미티드 | 멀티 스레드 데이터 처리장치에서의 스레드 스케줄링 구성 |
US9792294B2 (en) | 2014-07-02 | 2017-10-17 | Panzura, Inc | Using byte-range locks to manage multiple concurrent accesses to a file in a distributed filesystem |
KR101638136B1 (ko) * | 2015-05-14 | 2016-07-08 | 주식회사 티맥스 소프트 | 멀티 스레드 구조에서 작업 분배 시 스레드 간 락 경쟁을 최소화하는 방법 및 이를 사용한 장치 |
Non-Patent Citations (1)
Title |
---|
노성현 등, "로그 기반 파일 시스템의 매니 코어 성능 및 확장성 분석", 2018 한국소프트웨어종합학술대회논문집 (2018.12.19.) * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115659367A (zh) * | 2022-10-24 | 2023-01-31 | 青岛海信移动通信技术股份有限公司 | 一种数据处理方法、装置、终端设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
KR102251869B1 (ko) | 2021-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Lu et al. | Aria: a fast and practical deterministic OLTP database | |
US8412689B2 (en) | Shared log-structured multi-version transactional datastore with metadata to enable melding trees | |
Yu et al. | Tictoc: Time traveling optimistic concurrency control | |
US10599485B2 (en) | Index structure using atomic multiword update operations | |
US8386421B2 (en) | Concurrency control for confluent trees | |
JP3441807B2 (ja) | B木インデクスの管理方法およびシステム | |
US11023453B2 (en) | Hash index | |
Levandoski et al. | High performance transactions in deuteronomy | |
EP2378420B1 (en) | Ownership reassignment in a shared-nothing database system | |
US8671076B2 (en) | Database recovery using logs applied to consistent copies | |
Levandoski et al. | LLAMA: A cache/storage subsystem for modern hardware | |
US20090271435A1 (en) | Data management method, data management program, and data management device | |
US20180011892A1 (en) | Foster twin data structure | |
CN104573112B (zh) | Oltp集群数据库中页面查询方法及数据处理节点 | |
CN113220490A (zh) | 异步写回持久化内存的事务持久化方法及系统 | |
Lee et al. | Write optimization of log-structured flash file system for parallel I/O on manycore servers | |
CN107766478A (zh) | 一种面向高竞争情景的并发索引结构的设计方法 | |
Eldeeb et al. | Chardonnay: Fast and general datacenter transactions for {On-Disk} databases | |
Ma et al. | Hiengine: How to architect a cloud-native memory-optimized database engine | |
Lakshman et al. | Nitro: a fast, scalable in-memory storage engine for nosql global secondary index | |
KR102251869B1 (ko) | 파일 시스템 및 이를 이용한 단일 파일 쓰기 병렬화 방법 | |
Sauer et al. | Instant restore after a media failure | |
Nguyen et al. | Why Files If You Have a DBMS? | |
Lee et al. | Concurrent file metadata structure using readers-writer lock | |
Nakazono et al. | Griffin: Fast transactional database index with hash and b+-tree |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PA0109 | Patent application |
Patent event code: PA01091R01D Comment text: Patent Application Patent event date: 20190524 |
|
PA0201 | Request for examination | ||
PE0902 | Notice of grounds for rejection |
Comment text: Notification of reason for refusal Patent event date: 20200918 Patent event code: PE09021S01D |
|
PG1501 | Laying open of application | ||
E701 | Decision to grant or registration of patent right | ||
PE0701 | Decision of registration |
Patent event code: PE07011S01D Comment text: Decision to Grant Registration Patent event date: 20210226 |
|
GRNT | Written decision to grant | ||
PR0701 | Registration of establishment |
Comment text: Registration of Establishment Patent event date: 20210507 Patent event code: PR07011E01D |
|
PR1002 | Payment of registration fee |
Payment date: 20210507 End annual number: 3 Start annual number: 1 |
|
PG1601 | Publication of registration |