Nghiên cứu tính toán song song và ứng dụng vào hệ thống tính cước data 3g - Pdf 10

1

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

NHỮ THANH THẾ

NGHIÊN CỨU TÍNH TOÁN SONG SONG VÀ
ỨNG DỤNG VÀO HỆ THỐNG TÍNH CƯỚC DATA 3G TÓM TẮT LUẬN VĂN THẠC SĨ

HÀ NỘI - 2013 2

1. Lý do chọn đề tài
Nhu cầu tính toán trong lĩnh vực khoa học, công nghệ ngày càng cao và trở
thành một thách thức lớn, từ đó các giải pháp nhằm tăng tốc độ tính toán đã được
ra đời, từ năm 2001 đến năm 2003 tốc độ của Pentium 4 đă tăng gấp đôi từ
1.5GHz lên đến 3GHz, tuy nhiên hiệu năng của CPU (Central Processing Unit)
không tăng tương xứng như mức gia tăng xung của CPU, và việc gia tăng tốc độ
xung của CPU nhanh chóng chạm phải ngưỡng tối đa mà cụ thể trong khoảng thời
gian 2 năm từ năm 2003 đến năm 2005 tốc độ của CPU chỉ tăng từ 3GHz lên
3.8GHz. Trong quá trình tăng tốc độ xung của CPU các nhà sản xuất đã chạm phải
vấn đề về nhiệt độ của CPU sẽ quá cao và các giải pháp tản nhiệt khí đã đến mức
tới hạn không thể đáp ứng được khả năng làm mát khi CPU hoạt động ở xung quá
cao như vậy. Vì vậy việc gia tăng xung hoạt động của CPU không sớm thì muộn
cũng sẽ đi vào bế tắc.
Trước tình hình này, các nhà nghiên cứu vi xử lý đã chuyển hướng sang
phát triển công nghệ đa lõi, nhiều lõi, với cơ chế xử lý song song trong các máy
tính nhằm tăng hiệu năng và tiết kiệm năng lượng.
Với dữ liệu lớn mà Hệ thống tính cước data 3g mạng Vinaphone đang đảm
nhiệm, cần tăng tốc xử lý và tính toán. Để đảm bảo thời gian cung cấp thông tin
cho khách hàng.
Xuất phát từ nhu cầu trên tôi chọn đề tài:
“NGHIÊN CỨU TÍNH TOÁN SONG SONG VÀ ỨNG DỤNG VÀO HỆ
THỐNG TÍNH CƯỚC DATA 3G” 4
SONG SONG
1.1. Tổng quan về tính toán song song
Khoa học kỹ thuật ngày càng phát triển, đặt ra nhiều bài toán với khối
lượng tính toán rất lớn. Trong số đó có những bài toán mà kết quả chỉ có ý nghĩa
nếu được hoàn thành trong khoảng thời gian cho phép.
Để giải quyết những bài toán này, người ta đã nghiên cứu tăng tốc độ tính
toán bằng hai phương pháp hay kết hợp cả hai:
- Phương pháp 1: Cải tiến công nghệ, tăng tốc độ xử lý của máy tính.
Công việc này đòi hỏi nhiều thời gian, công sức và tiền của, nhưng tốc
độ cũng chỉ đạt được đến một giới hạn nào đó.
- Phương pháp 2: Chia bài toán ra thành những công việc nhỏ để có thể
chạy song song trên nhiều bộ xử lý.
Việc phát triển công nghệ tính toán theo phương pháp 2 đã cho ra đời công
nghệ tính toán song song, đó là việc sử dụng đồng thời nhiều tài nguyên tính toán
để giải quyết một bài toán. Các tài nguyên tính toán có thể bao gồm một máy tính
với nhiều bộ vi xử lý, một tập các máy tính kết nối mạng hay là một sự kết hợp
của hai dạng trên
1.1.1. Các mô hình tính toán song song
Một hệ thống máy tính song song là một máy tính với nhiều hơn một bộ xử
lý cho phép xử lý song song. Dựa vào sự phân biệt ở kết nối giữa các bộ xử lý
(hay thành phần xử lý), giữa bộ xử lý và bộ nhớ mà có rất nhiều loại kiến trúc máy
tính song song khác nhau. Nhưng theo nguyên tắc phân loại của Flynn thì có hai
kiến trúc máy tính song song song thông dụng sau:
ƒ SIMD - Single Instruction Multiple Data: đơn lệnh đa dữ liệu
ƒ MIMD - Multiple Instruction Multiple Data: đa lệnh đa dữ liệu
6 - Song song hoá tường minh: người lập trình phải tự phân chia chương
trình của họ đế nó có thể thực thi song song.
Hiện nay có rất nhiều mô hình lập trình song song: Đa luồng, Truyền thông
điệp, Song song dữ liệu, Lai
1.2.1. Mô hình đa luồng
Nhiều hệ thống cung cấp sự hỗ trợ cả hai luồng nhân và luồng người dùng
nên tạo ra nhiều mô hình đa luồng khác nhau. Chúng ta sẽ xem xét ba loại cài đặt
luồng thông thường.
1.2.1.1. Mô hình 1:1 (thread cấp nhân)
Mô hình một-một ánh xạ mỗi luồng người dùng tới một luồng nhân. Nó
cung cấp khả năng đồng hành tốt hơn mô hình nhiều-một bằng cách cho một luồng
khác chạy khi một luồng thực hiện lời gọi hệ thống nghẽn; nó cũng cho phép
nhiều luồng chạy song song trên các bộ xử lý khác nhau.
1.2.1.2. Mô hình N:1 (thread cấp người dùng)
Một mô hình N:1: tất cả các thread cấp ứng dụng đều vạch ra một đơn thực
thể được lập lịch cấp nhân. Nhân không có tri thức về thread ứng dụng. Với
phương pháp này, ngữ cảnh chuyển có thể được hoàn thành rất nhanh và ngoài ra,
nó có thể được thực hiện ngay cả trên những nhân đơn giản mà không hỗ trợ
thread.
1.2.1.3. Mô hình N:M (thread tích hợp)
Mô hình N:M chỉ ra với N thread ứng dụng tương ứng với M thực thể nhân
Đây là kết hợp giữa cấp nhân (1:1) và cấp người dùng (N:1). Nói chung, hệ thống
thread N:M thể hiện phức tạp hơn thread nhân hoặc thread người dùng, bởi vì đòi
hỏi mã của cả thread nhân và thread người dùng.
8 Chương 2 – NGHIÊN CỨU THƯ VIỆN LẬP TRÌNH SONG
SONG PTHREAD
Thread là một mô hình lập trình phổ biến cho phép nhiều thread đơn có thể
chạy trên cùng một tiến trình, và các thread này có thể chia sẻ tài nguyên của tiến
trình cũng như có thể tính toán độc lập. Và ứng dụng hữu ích nhất của mô hình
này là khi nó được áp dụng cho một tiến trình đơn lẻ để cho phép tính toán song
song trên một hệ thống đa xử lý. Trong bản luận văn này, tôi sẽ trình bày mô hình
này trên chuẩn IEEE POSIX 1003.1c, được gọi là POSIX thread hay Pthread.
2.1. Giới thiệu về Thread và Multithread
2.1.1. Tổng quan về Thread
Trong khoa học máy tính một chuỗi các tính toán kết quả từ một nhánh của
một chương trình máy tính chia thành hai hoặc nhiều nhiệm vụ chạy đồng thời. Sự
thể hiện của các thread và tiến trình là khác nhau trong một hệ điều hành, nhưng
trong hầu hết các trường hợp, một thread được nằm bên trong một tiến trình.
Nhiều thread có thể tồn tại cùng trong một tiến trình và chia sẻ tài nguyên như bộ
nhớ, trong khi những tiến trình khác nhau không thế chia sẻ tài nguyên.
2.1.2. So sánh Thread với tiến trình
Thread khác với tiến trình trong hệ điều hành đa nhiệm truyền thống ở các
điểm sau:
- Các tiến trình thường được độc lập, còn các thread thì tồn tại như là các
tập con của một tiến trình.
- Tiến trình có trạng thái thông tin đáng kể, trong khi nhiều thread trong
một tiến trình chia sẽ trạng thái tiến trình cũng như bộ nhớ và các tài
nguyên khác.
- Tiến trình có vùng địa chỉ riêng biệt, trong khi thread chia sẽ không gian

2.3.1. Tổng quan về Pthread
2.3.1.1. Khái niệm Pthread
Thread là một dòng các điều khiển trong một process hay một ứng dụng.
11 2.3.1.2. Tại sao lại sử dụng Pthread
Động lực chính đế sử dụng Pthread là để nhận ra hiệu quả tiềm năng của
một chương trình. Khi so sánh với việc tạo ra và quản lý một process, một thread
được tạo ra với ít chi phí hoạt động của hệ điều hành hơn. Quản lý thread cũng yêu
cầu ít tài nguyên hệ thống hơn là quản lý process.
2.3.1.3. Các pthread API
Những Ptrhead API thông thường được định nghĩa trong chuẩn ANSI/IEEE
POSIX 1003.1 – 1995. Các thủ tục con trong đó bao gồm các API Pthreads có thể
được chính thức nhóm lại thành bốn nhóm chính:
- Quản lý thread: các thủ tục làm việc trực tiếp với thread: tạo thread,
tách, nối… Chúng cũng bao gồm các hàm để thiết lập hoặc truy vấn
thuộc tính thread (như nối, lập lịch…).
- Mutexes: các thủ tục xử lý việc đồng bộ hóa, được gọi là một “mutex”,
viết tắt của “mutual exclusion”. Các hàm mutex cung cấp các hàm tạo,
phá hủy, khóa và mở khóa mutexes. Các hàm này được bổ sung thêm
các hàm thuộc tính mutex để thiết lập hoặc sửa đổi các thuộc tính liên
kết với mutexes.
- Biến điều kiện: các thủ tục để đánh địa chỉ liên kết giữa các thread để
chia sẻ một mutex.
- Đồng bộ hóa: các thủ tục quản lý đọc/ghi các khóa.
- Quy ước đặt tên: tất cả các định danh trong thư viện đều được bắt đầu

o Những thread thực hiện lời gọi tới hàm pthread_exit.
o Những thread bị hủy từ những thủ tục khác bằng hàm
pthread_cancel.
o Tiến trình cuối bị ngắt trong khi thực hiện lời gọi tới hàm khác
hoặc thoát khỏi thủ tục con.

Hàm pthread_exit được sử dụng để thoát khỏi một thread.
2.3.2.1. Truyền tham số cho Thread
Thủ tục pthread_create() cho phép người lập trình có thể truyền một đối số
cho thủ tục khởi tạo thread. Trong trường hợp có nhiều tham số cần truyền, sự giới
hạn này rất dễ dàng được vượt qua bằng cách tạo ra 1 cấu trúc bao gồm tất cả các
tham số, sau đó truyền 1 tham số con trỏ của struct này vào thủ tục
pthread_create(). Tất cả các tham số đều phải được truyền bằng tham chiếu và
kiểu (void *).
Ví dụ 1: truyền 1 tham số:
13 //Hàm thực hiện nhiệm vụ trong thread.
void* do_loop(void *data){
int i, j;
int me = *((int*)data);
for(i=0;i<10;i++){
// de nhin cho biet cac thong tin se duoc chay như thế nào
Sleep(100);
for(j=0;j<10;j++) ;
printf("Me:%d value is %d\n ", me,i);

ptr = (thr_data *)data;
//Sleep(500);
printf("Thread %d say %s\n",ptr->thread_no,ptr->message);
pthread_exit(0);
return 0;
}
//Truyen du lieu cau truc du lieu vao thread.
int ExampleThread::Multi_Param_Thread(void) {
pthread_t p_thread1, p_thread2;
thr_data data1, data2;
data1.thread_no = 1; strcpy_s(data1.message,100,"hello ");
data2.thread_no = 2; strcpy_s(data2.message,100,"world ");
int thr_id1, thr_id2;
thr_id1 = pthread_create(&p_thread1,NULL, print_thr,(void
*)&data1);
thr_id2 = pthread_create(&p_thread2,NULL, print_thr,(void
*)&data2);
printf("Multi_Param_Thread \n");
return true;
15 }

2.3.3. Nối và tách Thread
2.3.3.1. Những thủ tục chính
- Pthread_join (threadid,status): dùng để nối các thread lại

Hàm pthread_key_delete() có thể được dùng để xóa khóa, sử dụng hàm này
như sau:
Int rc = pthread_key_delete(key);

Hàm này sẽ trả về 0 nếu thành công, hoặc EINVAL nếu có lỗi.
2.4. Đồng bộ hóa các tác vụ trong POSIX THREAD
Để việc đồng bộ hóa các tác vụ, tránh vấn đề tranh chấp tài nguyên, có thể sử dụng
sử dụng các tính năng của Posix Thread như:
- Mutex (mutual exclusion): loại trừ lẫn nhau
- Biến điều kiện (Condictional variable).
- Semephores: báo hiệu.
2.4.1. Mutex
2.4.1.1. Khái niệm mutex.

Biến mutex là một trong những phương tiện chính để thực hiện việc đồng
bộ thread và cho việc bảo vệ việc chia sẻ dữ liệu khi xảy ra nhiều lời gọi.
2.4.1.2. Tạo ra và phá hủy mutex
2.4.1.2.1. Những thủ tục
- Pthread_mutex_init(mutex, attr)
- Pthread_mutex_destroy(mutex)
- Pthead_mutexattr_init (attr)
- Pthread_mutexattr_destroy(attr)
2.4.1.2.2. Cách sử dụng
Biến mutex phải được khia bảo với kiểu pthread_mutex_t và phải được
khởi tạo trước khi nó được sử dụng.
17
2.4.2.2.2. Cách sử dụng
Biến điều kiện phải được khai báo với kiểu pthread_cond_t, và phải được
khởi tạo trước khi chúng được sử dụng. Có hai cách để khởi tạo biến điều kiện:
- Theo cách tĩnh: khi chúng được khai báo:
pthread_cond_t myconvar = PTHREAD_COND_INITIALIZER.
- Theo cách động: với thủ tục pthread_cond_init. ID của biến điều kiện
được tao ra được trả về với lời gọi thread thông qua tham số
condition. Phương thức này cho phép thiết lập thuộc tính cho biến
điều kiện, attr.
2.4.2.3. Waiting và signaling trên biến điều kiện.
2.4.2.3.1. Các thủ tục
- Pthread_cond_wait (condition, mutex)
- Pthread_cond_signal (condition)
- Pthread_cond_broadcast (condition)
2.4.2.3.2. Cách sử dụng
Thủ tục pthread_cond_wait() ngăn lời gọi thread cho tới khi điểu kiện xác
định được báo hiệu. Thủ tục này nên được gọi trong khi mutex bị khóa và nó sẽ tự
động mở khóa mutex trong khi chờ đợi.
2.4.3. semaphore
2.4.3.1. Những thủ tục chính
- sem_init (sem_t *sem, int pshared, unsigned int value).
- sem_wait (sem_t * sem).
- sem_post (sem_t * sem).
- sem_destroy (sem_t * sem).
2.4.3.2. Cách sử dụng
- Thủ tục sem_init (): dùng để khởi tạo biến semaphore, trong đó:

Tôi đề xuất dùng công nghệ lập trình Microsoft Visual C++ 2008 64bit để tận
dụng bộ nhớ Ram và áp dụng phương pháp xử lý xong xong để tận dụng số lượng
CPU sẵn có của máy chủ.
20 3.2.1. Giải pháp tổng thể
Tôi xin đề xuất Giải pháp Tính cước data 3g cho Trung tâm cước để đáp
ứng những yêu cầu đề ra. Giải pháp được mô tả như sau:

Hình 3.1. Mô hình giải pháp tổng thể

Rating3g là phần mềm gồm đầy đủ, hoàn chỉnh cho người dùng đầu cuối,
được phát triển để giải quyết các nghiệp vụ, tốc độ xử lý về tính cước data 3g cho
các thuê bao trả sau, nó bao gồm các tính năng chính:
- Rating3g: Khả năng tính cước cho các thuê bao trả sau.
Module chức năng trên phải đáp ứng được các nền tảng các dịch vụ sau:
- Quản lý hợp nhất các KPIs, Cảnh báo
- Khả năng cấu hình động các tham số.
- Phân tích dữ liệu: Được thực hiện nhằm tối ưu hóa các biểu đồ và báo
cáo.
- Quản trị - Giám sát và quản lý tại một điểm duy nhất tất cả các module
và các quá trình.
21

3.3. Phân tích, thiết kế hệ thống tính cước
3.3.1. Phân tích
3.3.1.1. Chức năng thu thập dữ liệu
Chức năng có nhiệm vụ thu thập dữ liệu các bản tin cước, phân loại bản tin
cước trả trước trả sau, trả trước
Đọc thông tin
từ Oracle
Xử lý phân loại bản ghi
trả trước/trả sau
Ghi ra file *.dat
Bỏ qua
Trả trước
Trả sau

3.3.1.2. Chức năng sắp xếp dữ liệu
Chức năng có nhiệm vụ sắp xếp theo thứ tự tăng dần thông tin các bản tin
cước truy cập theo các tiêu chí. Làm đầu vào cho chức năng tính cước được đúng
theo trật tự thời gian.
Đọc file *.dat Sắp xếp thông tin Ghi ra file *.dbf

3.3.1.3. Chức năng tính cước chi tiết
Chức năng có nhiệm vụ áp giá cước chi tiết, tính khuyến mại, tính hạn mức
thanh toán tối đa.
23 Đọc file *.dbf
3.3.2.1. Mô hình quan hệ cơ sở dữ liệu

- Mô tả chi tiết bảng dữ liệu SERVICE_CODES, PRICES,
PRICE_GROUPS,
TIME_UNITS,PROMO_DISPATCHES,EXCEPTION_LISTS.
25 3.3.2.2. Mô hình chức năng
CommonLib
CDateTime
m_DateTime
CString
DateToString();
CString
TimeToString();
RECORD_INDEX_CDR3G
*pBuff
Int Index_Cdr_3g()
RateIndex
CFile fOut,fOutPre
LOAITB *pLoaiTB
int
Get_CDR_Detail()
RateCollect

- DbLib: chứa các thông tin về tạo tệp foxpro, xác định vị trí trường,…
- MemblockLib: chứa các thông tin về cây tìm kiếm,….
- RateCollect:thu thập dữ liệu, ; Lớp RateIndex: chứa các thông tin về
hàm sắp xếp dữ liệu ….;
- Rating: chứa các thông tin về hàm tính cước, khuyến mại,Lớp
RateSplit: chứa các thông tin về hàm phân tách dữ liệu,….
- SortLib: chứa các thông tin về thư viện sắp xếp dữ liệu,….
3.4. Cài đặt và thử nghiệm
Ở mục này này nêu lên các nội dung
- Cấu hình tại máy tính cước
- Một số kết quả, và hình ảnh thử nghiệm hệ thống.


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status