IP Library Granted Patent US 12,013,817
Granted Patent B2
US 12,013,817 · App. 17/799,705 · Granted Jun 18, 2024

Multi-shared directory tree-oriented control method and system

Inventors: Shijie Li (Jiangsu, CN); Duan Zhang (Jiangsu, CN)
Assignee: INSPUR SUZHOU INTELLIGENT TECHNOLOGY CO., LTD.
G06F16/1767G06F16/137G06F16/16G06F16/185
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,013,817
App. No.
17/799,705
Granted
Jun 18, 2024
Kind
B2
Abstract

Disclosed in the present application are a multi-shared directory tree-oriented control method and system. The method includes: setting a number of circular queues and a number of worker execution units in a Samba configuration file of a server according to a number of directories to be shared; running a Samba main process on the server; obtaining a data read-write test request from a client; and orienting request tasks of individual directories to individual worker execution units according to the data read-write test request by using a Server Message Block (SMB) message header data-based adaptive equalization control algorithm. The system includes an Input/Output (IO) execution unit, a plurality of worker execution units, a setting unit, a request obtaining unit, and a concurrency control unit. According to the present application, the data processing efficiency of a Samba server and the data processing efficiency of a client may be effectively improved.

Claims (77)

1. A multi-shared directory tree-oriented control method, comprising:

setting a number of circular queues and a number of worker execution units in a Samba configuration file of a server according to a number of directories to be shared, wherein each of the worker execution units is configured to perform a calculation process in a Samba process, each of the circular queues is configured to perform data exchange between an Input/Output (IO) execution unit and a corresponding one of the worker execution units, and the IO execution unit is configured to obtain a directory request and orient the directory request to the corresponding one of the worker execution units;

running a Samba main process on the server;

obtaining a data read-write test request from a client; and

orienting request tasks of individual directories to individual worker execution units according to the data read-write test request by using a Server Message Block (SMB) message header data-based adaptive equalization control algorithm, wherein the IO execution unit is matched with a plurality of the worker execution units, wherein the orienting request tasks of individual directories to individual worker execution units according to the data read-write test request by using the SMB message header data-based adaptive equalization control algorithm comprises:

setting a hash table length for a TREE Identifier (ID) and a remainder N for a division method according to a number of practically shared directories of the server, wherein the division method is used to calculate a hash table index;

extracting a TREE ID field in an input-port SMB message;

judging whether the TREE ID field is 0;

in response to the TREE ID field being 0, executing an original Samba processing logic in the IO execution unit;

in response to the TREE ID field not being 0, calculating and determining a corresponding one of the circular queues through a hash table by taking the TREE ID field of header data of the input-port SMB message as a keyword;

calculating, by the IO execution unit, an input flow rate according to a time interval between a currently received input-port SMB message and a latest message with the same TREE ID;

judging whether the input flow rate exceeds a set input flow rate threshold;

in response to the input flow rate exceeding the set input flow rate threshold, enabling a new worker execution unit; and

associating the new worker execution unit with an IO circular queue corresponding to the TREE ID field.

2. The multi-shared directory tree-oriented control method according to claim 1 , wherein the method further comprises:

performing concurrency control on the IO execution unit and the corresponding one of the worker execution units by using a lock-free atomic operation queue.

3. The multi-shared directory tree-oriented control method according to claim 2 , wherein the lock-free atomic operation queue is a Compared And Swap (CAS) atomic operation queue.

4. The multi-shared directory tree-oriented control method according to claim 2 , wherein the performing concurrency control on the IO execution unit and the corresponding one of the worker execution units by using the lock-free atomic operation queue comprises:

in an input direction, setting a concurrent lock-free atomic operation queue between the IO execution unit and each of the worker execution units, and in response to an SMB message flow rate increasing, enabling the new worker execution unit;

in an output direction, setting a concurrent lock-free atomic operation queue between each of the worker execution units and the IO execution unit;

during data storage, encapsulating an input message as a fixed-length request object in Samba;

during concurrent data processing, setting that a single-producer multiple-consumer model is used for an input-direction circular queue and that a multiple-producer single-consumer model is used for an output-direction circular queue; and

by a producer, continuously writing data and modifying a position of a writer pointer, and by a consumer, continuously reading data and modifying a position of a read pointer.

5. The multi-shared directory tree-oriented control method according to claim 1 , wherein the running the Samba main process on the server comprises:

in response to the Samba main process receiving a mounting of a first shared directory to the client and being forked to obtain a smb daemon (smbd) subprocess for initialization, creating an IO thread and a plurality of worker threads as execution units.

6. A multi-shared directory tree-oriented control device, comprising:

a processor; and

a memory, storing a computer instruction executable by the processor, and upon execution of the computer instruction, is configured to:

set a number of circular queues and a number of worker execution units in a Samba configuration file of a server according to a number of directories to be shared, wherein each of the worker execution units is configured to perform a calculation process in a Samba process, each of the circular queues is configured to perform data exchange between an Input/Output (IO) execution unit and a corresponding one of the worker execution units, and the IO execution unit is configured to obtain a directory request and orient the directory request to the corresponding one of the worker execution units;

run a Samba main process on the server;

obtain a data read-write test request from a client;

orient request tasks of individual directories to individual worker execution units according to the data read-write test request by using a Server Message Block (SMB) message header data-based adaptive equalization control algorithm, wherein the IO execution unit is matched with a plurality of the worker execution units;

set a hash table length for a TREE Identifier (ID) and a remainder N for a division method according to a number of practically shared directories of the server, wherein the division method is used to calculate a hash table index;

extract a TREE ID field in an input-port SMB message;

judge whether the TREE ID field is 0;

in response to the TREE ID field being 0, execute an original Samba processing logic in the IO execution unit;

in response to the TREE ID field not being 0, calculate and determine a corresponding one of the circular queues through a hash table by taking the TREE ID field of header data of the input-port SMB message as a keyword;

calculate, by the IO execution unit, an input flow rate according to a time interval between a currently received input-port SMB message and a latest message with the same TREE ID;

judge whether the input flow rate exceeds a set input flow rate threshold;

in response to the input flow rate exceeding the set input flow rate threshold, enable a new worker execution unit; and

associate the new worker execution unit with an IO circular queue corresponding to the TREE ID field.

7. The multi-shared directory tree-oriented control device according to claim 6 , wherein the processor, upon execution of the computer instruction, is further configured to:

perform concurrency control on the IO execution unit and the corresponding one of the worker execution units by using a lock-free atomic operation queue.

8. The multi-shared directory tree-oriented control device according to claim 7 , wherein the lock-free atomic operation queue is a Compared And Swap (CAS) atomic operation queue.

9. The multi-shared directory tree-oriented control device according to claim 7 , wherein the processor, upon execution of the computer instruction, is further configured to:

in an input direction, set a concurrent lock-free atomic operation queue between the IO execution unit and each of the worker execution units, and in response to an SMB message flow rate increasing, enable the new worker execution unit;

in an output direction, set a concurrent lock-free atomic operation queue between each of the worker execution units and the IO execution unit;

during data storage, encapsulate an input message as a fixed-length request object in Samba;

during concurrent data processing, set that a single-producer multiple-consumer model is used for an input-direction circular queue and that a multiple-producer single-consumer model is used for an output-direction circular queue; and

by a producer, continuously write data and modify a position of a writer pointer, and by a consumer, continuously read data and modify a position of a read pointer.

10. The multi-shared directory tree-oriented control device according to claim 6 , wherein the processor, upon execution of the computer instruction, is further configured to:

in response to the Samba main process receiving a mounting of a first shared directory to the client and being forked to obtain a smb daemon (smbd) subprocess for initialization, create an IO thread and a plurality of worker threads as execution units.

11. A non-transitory computer-readable storage medium, storing a computer program, wherein the computer program, upon execution by a processor, is configured to cause the processor to:

set a number of circular queues and a number of worker execution units in a Samba configuration file of a server according to a number of directories to be shared, wherein each of the worker execution units is configured to perform a calculation process in a Samba process, each of the circular queues is configured to perform data exchange between an Input/Output (IO) execution unit and a corresponding one of the worker execution units, and the IO execution unit is configured to obtain a directory request and orient the directory request to the corresponding one of the worker execution units;

run a Samba main process on the server;

obtain a data read-write test request from a client;

orient request tasks of individual directories to individual worker execution units according to the data read-write test request by using a Server Message Block (SMB) message header data-based adaptive equalization control algorithm, wherein the IO execution unit is matched with a plurality of the worker execution units;

set a hash table length for a TREE Identifier (ID) and a remainder N for a division method according to a number of practically shared directories of the server, wherein the division method is used to calculate a hash table index;

extract a TREE ID field in an input-port SMB message;

judge whether the TREE ID field is 0;

in response to the TREE ID field being 0, execute an original Samba processing logic in the IO execution unit;

in response to the TREE ID field not being 0, calculate and determine a corresponding one of the circular queues through a hash table by taking the TREE ID field of header data of the input-port SMB message as a keyword;

calculate, by the IO execution unit, an input flow rate according to a time interval between a currently received input-port SMB message and a latest message with the same TREE ID;

judge whether the input flow rate exceeds a set input flow rate threshold;

in response to the input flow rate exceeding the set input flow rate threshold, enable a new worker execution unit; and

associate the new worker execution unit with an IO circular queue corresponding to the TREE ID field.

12. The non-transitory computer-readable storage medium according to claim 11 , wherein the computer program, upon execution by the processor, is further configured to cause the processor to:

perform concurrency control on the IO execution unit and the corresponding one of the worker execution units by using a lock-free atomic operation queue.

13. The non-transitory computer-readable storage medium according to claim 12 , wherein the lock-free atomic operation queue is a Compared And Swap (CAS) atomic operation queue.

14. The non-transitory computer-readable storage medium according to claim 12 , wherein the computer program, upon execution by the processor, is further configured to cause the processor to:

in an input direction, set a concurrent lock-free atomic operation queue between the IO execution unit and each of the worker execution units, and in response to an SMB message flow rate increasing, enable the new worker execution unit;

in an output direction, set a concurrent lock-free atomic operation queue between each of the worker execution units and the IO execution unit;

during data storage, encapsulate an input message as a fixed-length request object in Samba;

during concurrent data processing, set that a single-producer multiple-consumer model is used for an input-direction circular queue and that a multiple-producer single-consumer model is used for an output-direction circular queue; and

by a producer, continuously write data and modify a position of a writer pointer, and by a consumer, continuously read data and modify a position of a read pointer.

15. The non-transitory computer-readable storage medium according to claim 11 , wherein the computer program, upon execution by the processor, is further configured to cause the processor to:

in response to the Samba main process receiving a mounting of a first shared directory to the client and being forked to obtain a smb daemon (smbd) subprocess for initialization, create an IO thread and a plurality of worker threads as execution units.

Assignments (3)
LICENSE Recorded Jun 30, 2026
From: IEIT SYSTEMS CO., LTD
To: AIVRES SYSTEMS INC.
Reel/Frame 075857/0939 →
CORRECTIVE ASSIGNMENT TO CORRECT THE THE ASSIGNEE ADDRESS PREVIOUSLY RECORDED AT REEL: 061174 FRAME: 0899. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT.. Recorded Oct 19, 2022
From: LI, SHIJIE; ZHANG, DUAN
To: INSPUR SUZHOU INTELLIGENT TECHNOLOGY CO., LTD.
Reel/Frame 061992/0744 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 15, 2022
From: LI, SHIJIE; ZHANG, DUAN
To: INSPUR SUZHOU INTELLIGENT TECHNOLOGY CO., LTD.
Reel/Frame 061174/0899 →
Priority Claims (1)
CN 202010093617.8 · Feb 14, 2020 · national
Continuity (1)
Related Publication 20230086123A1 · Mar 23, 2023